Я пытаюсь увидеть, что происходит, когда я пытаюсь убить процесс kernel_task
. Поскольку kill -9 pid
является командой для принудительного выхода из процесса, а pid kernel_task
равен 0, я просто запустил kill -9 0
.
Вместо получения Permission Denied
или Operation not permitted
при уничтожении корневого процесса, вы просто получаете следующее:
Last login: Thu Jun 18 16:55:10 on ttys005
MacBook-Air:~ james$ kill -9 0
[Process completed]
... что странно, потому что попытка убить launchd
(на один уровень ниже kernel_task
) дает вам следующее:
-bash: kill: (1) - Operation not permitted
и все остальные корневые процессы.
Почему, черт возьми, он просто завершает процесс, который вызвал команду, вместо того, чтобы отправлять Operation not permitted
, как все другие корневые процессы?
Бонусные баллы, если вы можете сказать мне ответ на этот вопрос: если вы создаете скрипт, который пытается убить kernel_task
(и игнорирует SIGTERM
), при запуске он выдаст Killed: 9
и вернется к bash. Почему он помещает это в стандартный вывод, когда убивает его? Почему не что-то более наглядное?