Что такое «второй» процесс?

19

Интересно, что secdделает процесс под OSX Yosemite. Я почти уверен, что видел, как этот процесс выполнялся в более ранних версиях MacOS, но я не помню, чтобы он так смело поглощал всю доступную память ...

У меня есть три компьютера под управлением Yosemite, каждый с разным конфигом. Все три были на срок от трех дней до одной недели. Вот список того, что secdдостигнуто:

  • На MacBookAir 2011 с 4 ГБ памяти 700 МБ выделено secd
  • На iMac 2008 с 6 ГБ памяти 2 ГБ выделены для secd
  • На iMac 2011 с 12 ГБ памяти выделено 4 ГБ для secd

На всех трех компьютерах secdэто самый большой процесс в памяти (больше, чем kernel task), и я подозреваю, что он играет роль в замедлении, которое я недавно испытал с приходом Йосемити. Я точно знаю, что процесс расширяется в памяти до неоправданных размеров и освобождает память, когда мне это нужно где-то еще. Единственная проблема заключается в том, что освобождение памяти происходит не так быстро, и большую часть времени производительность страдает до того, как процесс осознает, что должен отступить.

Мой поиск по сети не пришел к твердому заключению относительно того, что это за процесс, и почему он должен быть таким огромным. Я думаю, что я не единственный, кто испытывает это. Любой совет приветствуется.

Как предлагается ниже, secdимеет отношение к Apple Keychain. Вот файлы и порты, которые процесс сохраняет открытыми, когда он активен (в MacBookAir):

/
/usr/libexec/secd
/Users/.../Library/Keychains/7285EFCF-9AF6-53DD-BE44-DA1F59F96620/keychain-2.db-shm
/usr/share/icu/icudt53l.dat
/usr/lib/dyld
/private/var/run/diagnosticd/dyld_shared_cache_x86_64
/dev/null
/dev/null
/dev/null
count=2, state=0x2
/Users/.../Library/Keychains/7285EFCF-9AF6-53DD-BE44-DA1F59F96620/keychain-2.db
/Users/.../Library/Keychains/7285EFCF-9AF6-53DD-BE44-DA1F59F96620/keychain-2.db-wal
/Users/.../Library/Keychains/7285EFCF-9AF6-53DD-BE44-DA1F59F96620/keychain-2.db-shm
/Users/.../Library/Keychains/7285EFCF-9AF6-53DD-BE44-DA1F59F96620/keychain-2.db
/Users/.../Library/Keychains/7285EFCF-9AF6-53DD-BE44-DA1F59F96620/keychain-2.db-wal
/dev/random
/dev/random
/private/var/folders/z_/806bzc396cxgp4s0q17tpfwc0000gn/T/etilqs_y5BDgkbGkBV9ybF
/private/var/folders/z_/806bzc396cxgp4s0q17tpfwc0000gn/T/etilqs_Aw6Q7JhPlil3QNX
/Users/.../Library/Keychains/7285EFCF-9AF6-53DD-BE44-DA1F59F96620/keychain-2.db
/Users/.../Library/Keychains/7285EFCF-9AF6-53DD-BE44-DA1F59F96620/keychain-2.db-wal

Что не ясно, так это то, что процесс делает со всей памятью, которую он занимает, и почему он так раздувается.

зеркальное письмо
источник
2
Ваша память верна. secdработает на Маверикс. При быстром анализе этот демон не задокументирован, это плохо, это может быть кусок программного обеспечения. Этот демон в /usr/libexec/secd.
дан
@danielAzuelos Показывает ли он такое же раковое поведение на Маверикс?
ретрография
2
Согласно Plist secd для управления облачной цепочкой ключей используется не локальная.
Рускес
2
Только что обнаружил: без secdзапуска, Messages каждый раз запрашивает пароль.
интересно там
1
→ Mah: на Maveriskc, secdимеет VSZ = 2,4 ГБ и RSS = 3 МБ. secdработал в течение 84 с в системе, которая работает и работает с 5 дней.
Дан

Ответы:

20

Если это не очевидно, это всего лишь предположение. Но, надеюсь, это даст вам некоторые выводы.

Во-первых, вот что вы можете понять только из названия программы. Если выполнить команду /bin/ls /usr/libexec | sort -f | egrep '.*d$'(это напечатать все файлы , /usr/libexecоканчивающиеся на d), вы обнаружите ftpd, hidd, networkd, systemstatsd, и много программ , заканчивающихся d. «D» означает «демон», что в основном означает вспомогательный процесс, который всегда выполняется в фоновом режиме. secВесьма вероятно , означает «безопасность». Так же secdкак и «демон безопасности». Это имеет смысл, потому что вы сказали, что это похоже на работу с цепочкой для ключей.

Какой смысл в демонах? Некоторые демоны продолжают работать, чтобы выполнить какое-то текущее задание. hidd(«Демон устройства интерфейса пользователя»), например, является процессом, отвечающим за обработку ввода мыши / клавиатуры / трекпада. Некоторые другие демоны выполняют некоторые общие задачи, которые нужны многим другим программам. Приложения могут просто сказать демону сделать что-то вместо того, чтобы делать это самостоятельно. Так что, secdвероятно, делает что-то вроде этого, но связано с цепочкой для ключей.

Но что именно? Похоже, что он на самом деле не обрабатывает обычное использование цепочки для ключей, так как я все еще был в состоянии использовать secdцепочку для ключей после того, как я отключил LaunchAgent.

Проверка LaunchAgent дает нам подсказку:

Похоже, секд отвечает за синхронизацию связки ключей с iCloud?

Итак, что нужно делать? Попробуйте один или несколько из них:

  1. Если вам не нужна синхронизация цепочки для ключей iCloud, отключите ее в настройках iCloud.
  2. Используйте, launchctlчтобы отключить secd, если он, кажется, ни на что не влияет.
  3. Если вам нужна синхронизация цепочки для ключей iCloud, посмотрите, есть ли у вас тонна цепочек для ключей, и удалите те, которые вам не нужны.
  4. Возможно, перестройте свою цепочку для ключей (создайте новую цепочку для ключей, переместите необходимые элементы в нее и переместите ее поверх старой), если в старой цепочке для ключей остались ненужные артефакты.
interestinglythere
источник
Это потрясающая деталь. На шаге 2 должна быть звездочка - отметьте, что вы отключили эту функцию, поскольку Apple обычно добавляет к ней какую-то новую функцию, и ваш Mac в этом случае ломается, поэтому не забывайте время от времени включать ее и повторно принимать решение об отключении. системный демон.
bmike
Опять же - фантастический ответ, который объясняет, как перепроектировать любого демона, а не только тот, который плохо документирован.
bmike
5

Программа / usr / libexec / secd поставляется как часть OS X и является нормальным процессом безопасности. В документации говорится, что это относится к "политикам безопасности процессов во время выполнения". Вы можете проверить связанные процессы с этой командой:ps -ef|grep sec[iud]

На моем Mac я пользователь 501, поэтому у вас есть выходные данные для одного пользователя, вошедшего в систему:

Mac:~ bmike$ ps -ef|grep sec[iud]
    0    58     1   0 Sat12PM ??         0:56.51 /usr/sbin/securityd -i
    0   117     1   0 Sat12PM ??         0:00.15 /usr/libexec/secinitd
    0   171     1   0 Sat12PM ??         0:02.24 /usr/libexec/securityd_service
  501   205     1   0 Sat12PM ??         0:11.74 /usr/libexec/secinitd
  501  2634     1   0 Tue08PM ??         0:08.26 /usr/libexec/secd

Вы можете видеть, что securitydон запускается как пользователь root (PID 58), а затем как пользовательский процесс (PID 205), когда вы входите в систему. Фактически secdвыполняется «работа» и может появиться новое имя, даже если вы не выходите из системы и не входите в нее. Как чтобы понять, почему у вас используются дополнительные ресурсы, будет довольно сложно без копания fsusageи некоторых других команд заглянуть в запущенные процессы, а также просмотреть файлы журналов. Лучше всего, если вы отправите сообщение об ошибке в Apple, а затем задокументируете, как вы можете заставить его неправильно себя вести, особенно если вы можете воспроизвести его после перезагрузки.

В настоящее время не существует «страницы справочника» для, secdа страница для secinitdв лучшем случае скудна. Подача документации об ошибках в Apple - это один из способов попросить исправить недостаток документации.

bmike
источник
3

Из того, что я знаю об этом процессе (который на самом деле не тонна), это то, что он как-то связан с цепочкой для ключей Mac. Что вы можете сделать, это найти в мониторе активности и нажать Cmd + I, чтобы получить информацию об этом.

Один из советов, который вы можете попытаться сделать, - это запустить Первую помощь цепочки для ключей, перейдя в «Доступ к цепочке для ключей» в Spotlight, открыв меню «Доступ к цепочке для ключей» и выбрав опцию «Первая помощь для связки ключей», и следуйте инструкциям.

Надеюсь, что совет работает!

jaller200
источник
Брелок скорой помощи говорит, что мой брелок в порядке! На всех трех компьютерах.
ретрография
В El Capitan есть опция (по крайней мере, может быть и в предыдущих версиях) в разделе «Доступ к цепочке для ключей» - «Настройки для сброса моего стандартного ключа» «Возвращает к заводским настройкам по умолчанию и создает новую пустую цепочку для ключей входа в систему». быть перемещен в сторону, но не удален ". Как только я это сделал, securityd_service перешел с 51-53% CPU до 0-1,5%. Как только вы это сделаете, вы должны повторно войти в iCloud - я еще не обнаружил других последствий.
Оскар Остегард
1
Я только что обновил Mavericks до Sierra и обнаружил, что второй процессор ушел почти со 100% после сброса цепочки для ключей, как вы предложили. Потеряли все сохраненные пароли на веб-сайте, пришлось повторно войти в систему для синхронизации моего календаря и т. Д., Но, по крайней мере, я снова смогу использовать компьютер. Благодарю.
Вальтер Ниссен,