13

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

15

Правильный способ остановить и запустить демоны запуска - это запуск launchctl 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)

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .