Как перезапустить запущенную OS X без перезагрузки?

Когда я запускаю 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

и это, очевидно (?) оставляет меня с серым экраном, который не отвечает, поэтому мне все равно приходится перезагружаться. Заранее спасибо за ваши предложения.

2 ответа

Правильный способ остановить и запустить демоны запуска - это запуск ctctl unload.

Например:

Вы можете остановить службу демона запуска, используя подкоманду unload в launchctl.

$ sudo launchctl unload /System/Library/LaunchDaemons/<daemon name>.plist

Чтобы запустить отключенный или остановленный демон запуска:

$ sudo launchctl load /System/Library/LaunchDaemons/<daemon name>.plist

★ Будьте осторожны с отключением демонов запуска - особенно официальных Apple; потенциально она может сделать вашу систему не загружаемой, пока вы не запустите ее в безопасном режиме и не включите их вручную. Вы не убивает launchctl, как обычный процесс, потому что он может потенциально убить вашу систему, как вы испытали.

> Более подробная информация о launchctl здесь. (Страница руководства по запуску Apple)

Со страницы запуска launchd:

Вы не можете вызвать launchd напрямую.

Следовательно, даже если бы вы могли остановить его, вы не смогли бы его запустить, поэтому ответ таков: пути нет.

Другие вопросы по тегам