Я не предлагаю делать следующее, если вас не принуждают действительно особые причины:
kill -SEGV 1 # should generate a core dumps and kernel panic
kill -ABRT 1 # should generate a core dumps and kernel panic
kill -9 1 # On old systems worked nowadays not
Это грубо, жестоко, и это можно считать близким эквивалентом отсоединения шнура питания...
Несколько слов, ака История, глава I
В начале был init, и это будет до самого конца.
Весь Linux зависит от заботливого отношения к init [ 1 ] [ 2 ]. Тем не менее, и не без некоторой степени неблагодарности было время, когда добрый лорд- пользователь root мог предать эту любовь и внезапно kill
init с неопровержимым (-9
) порядком.
(«Книга этикета» предписывает пользователям графов, герцогов и маркизов обращаться к sudo
).
Затем некоторые волшебники создали заклинание, чтобы защитить init (из Книги man 2 init
)
Единственные сигналы, которые могут быть отправлены в ID процесса 1, процесс init, - это сигналы, для которых init явно установил обработчики сигналов. Это сделано для того, чтобы система не была случайно отключена.
(Наши шпионы сообщают [ U1 ], что init будет обрабатывать 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Итак, хороший лорд- пользователь изучает новости и меняет команду в kill -ABRT 1
или kill -SEGV 1
которая обычно генерирует панику ядра и дамп ядра.
Это работает, потому что init - первый процесс, который запускается и получает PID номер 1 [ 2b ].
Это небезопасно, неразумно, и вы чувствуете, что это предвестник дурного предзнаменования и проклятия, но если вы не можете материально возложить руки и отключить его ...
Проклятие: он не будет записывать в журнал, он не будет убивать все процессы и ждать их окончания, он не будет записывать на жесткий диск правильное обновление inode и не будет размонтировать файловые системы; даже не против того, что это сохранит опции графических окон и истории оболочек, и многие другие за пределами нашего воображения ...
Как мы уже говорили, это эквивалентно отключению шнура питания или аккумулятора ноутбука.
Правильный путь
"Non nobis, Domine, non nobis, sed nomini tuo da gloriam.", Девиз тамплиеров.
Правильный способ - использовать shutdown
[ 3 ]
sudo shutdown -h now
завершение работы обеспечивает безопасное отключение системы. Все зарегистрированные пользователи уведомляются о том, что система выходит из строя и ...
но с -h now
у них не будет достаточно времени, чтобы сделать так много ...
Несколько слов, ака История, Глава II
Когда-то с неба люди над Unix почувствовали некоторые логические шаги:
После того, как системные процессы были уничтожены, а файловые системы отключены, система останавливается / выключается или автоматически перезагружается. Это делается с помощью команды останова или перезагрузки, которая синхронизирует изменения на дисках, а затем выполняет фактическое отключение / выключение питания или перезагрузку. [ 4 ]
Действительно, в настоящее время мы больше не верим в существование трех Moirai [ 5 ] в мире Linux: reboot
, poweroff
и halt
[ 6 ]: современной науки ls -l $(which poweroff halt reboot)
и один из man reboot
, открывает новый свет на этот темный век и сообщает нам, что существует только одна истинная команда, которая анализирует все их параметры, так что мы наконец можем свободно запрашивать действия, противоречащие именам их команд! halt -p
или reboot -p
для poweroff
shutdown -r
для reboot
...)
Теперь, когда все казалось ясным и удобным для всех, слухи утверждают [ 7 ], что в преисподней systemd toolset [ 8 ] была совершена революция, оставив неосведомленным весь мир. Благодаря армии прокладок обратной совместимости мы даже не заметили, что перезагрузка, poweroff, halt [ 6 ] и даже telinit [ 9 ] и shutdown [ 3 ] уже привязаны к новому королю systemctl [ 10 ]. Пожалуйста, слушайте всю историю от оригинального голоса JdeBP The Bard [ 9 ], потому что у меня больше нет дыхания.
Если вы являетесь последователями культа Ubuntu, вы все же можете некоторое время оставаться в курсе всех этих утверждений [ 11 ].
Средиземье halt -f
, init
, telinit
, systemctl
Поиск решения быстрее, чем правильный, но также и мудрый.
systemctl --force --force poweroff # the most close to kill -9 1
systemctl --force poweroff # rough but still safe
sudo halt -f # rough
sudo telinit 0 # or 6 # safe
kill -SIGINT 1 # cause reboot as the reboot command
kill -SIGRTMIN+4 1 # cause shutdown as the halt command
То, что вы находитесь под systemd или нет, вы сможете остановить компьютер, не вызывая все правильные процедуры удаления (и так быстрее):
halt -f
: указание опции -f
(обратите внимание, что вам нужно -f
чтобы избежать процедуры выключения) с помощью указанной выше команды, с помощью sudo poweroff -f
или, возможно, даже с sudo reboot -f -h
.
Действительно, мы можем прочитать из man reboot
(и его эквивалентов) о необходимости указать опцию -f
чтобы избежать вызова shutdown:
При вызове с параметром --force или на уровне выполнения 0 или 6 этот инструмент вызывает сам системный вызов reboot (2) (с переданным аргументом REBOOTCOMMAND) и непосредственно перезагружает систему .
В противном случае это просто вызывает инструмент shutdown (8) с соответствующими аргументами без передачи аргумента REBOOTCOMMAND.
-f, --force
Не вызывает shutdown (8) и вместо этого выполняет фактическое действие, которое вы ожидаете от имени .
Кроме того, вы можете использовать telinit
[ 2b ] (или init
напрямую)
sudo telinit 0 # or 6
сказать init изменить уровень запуска ... но если так, почему бы не убить его напрямую?
В systemd вы можете использовать неразумный двойной параметр --force --force
systemctl --force --force poweroff
Чтение из руководства systemctl [ 10 ]
-f, --force
При использовании с enable перезаписать любые существующие конфликтующие символические ссылки.
При использовании с halt
poweroff
reboot
или Kexec, выполнить выбранную операцию без отключения всех устройств. Однако все процессы будут принудительно убиты, а все файловые системы отключены или перемонтированы только для чтения. Следовательно, это радикальный, но относительно безопасный вариант запроса немедленной перезагрузки. Если --force указан дважды для этих операций, они будут выполнены немедленно, без остановки каких-либо процессов или размонтирования файловых систем. Предупреждение: указание --force дважды для любой из этих операций может привести к потере данных.
Ps> Вдохновитесь вариантами из хвоста JdeBP The Bard [ 7 ].