Когда я запускаю Zotero / Firefox, они часто дают сбой, и я остаюсь с процессами зомби; после этого я не могу открыть новые экземпляры Zotero или Firefox. Я хочу избавиться от этих процессов зомби, а не перезагрузки, поэтому для <pid>
процесса зомби,
$ ps -p <pid> -o ppid=
дает мне <parent_pid>
и
ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'
говорит мне, что родительский процесс /sbin/launchd
для пользователя crippledlambda
.
Есть ли способ перезапустить это, не убивая мою систему?
sudo kill -1 <parent_pid>
ничего не делает. Я попытался написать это в сценарии и запустить его с sudo
:
for i in `launchctl list | grep launchd | awk -v PID=<parent_pid> '$1==PID { print $NF }'`; do `launchctl stop $i && launchctl start $i` ; done
и это очевидно (?) оставляет меня с серым экраном, который не отвечает, так что я все равно должен перезагрузиться. Заранее спасибо за ваши предложения.
launchd
всегда следует сразу же прочитать статусы выхода своих детей. Если они не настоящие зомби, то вы должны их убивать. В любом случае, убийствоlaunchd
вызовет больше проблем, чем решит.Ответы:
Правильный способ остановить и запустить демоны запуска - это запускctctl unload .
Например:
Вы можете остановить службу демона запуска, используя подкоманду unload в launchctl .
Чтобы запустить отключенный или остановленный демон запуска:
★ Будьте осторожны с отключением демонов запуска - особенно официальных Apple; потенциально она может сделать вашу систему не загружаемой, пока вы не запустите ее в безопасном режиме и не включите их вручную. Вы не убивает launchctl, как обычный процесс, потому что он может потенциально убить вашу систему, как вы испытали.
> Более подробная информация о launchctl здесь . (Страница руководства по запуску Apple)
источник
com.apple.bsd.launchdadd.plist
? Я не вижуlaunchd
точно. И спасибо за предупреждение ...scrun simctl spawn <sim_id> sudo launchctl unload …
. Plist файлы находятся под$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
Со страницы запуска launchd:
Следовательно, даже если бы вы могли остановить это, вы не смогли бы запустить его, поэтому ответ таков, что пути нет.
источник