Есть ли какая-нибудь команда / программа, с помощью которой я могу мгновенно выключить свою систему (от 1 до 5 секунд)?
Обновление (2015): Спасибо тем, кто предложил отключить через розетку. : D
Обновление (2016): @technophile предложил добавить в вопрос некоторую информацию, описывающую природу проблемы - главным образом, какой сценарий я пытался решить. Вот сценарий, по которому этот вопрос был задан несколько лет назад.
Мы строили систему для развертывания в общественных местах, таких как (аэропорты, отели и т. Д.). Люди могут использовать эту систему для интернет-серфинга, проверки своей электронной почты или даже бронирования и т. Д. С помощью своих кредитных карт. Созданная система обеспечивала, чтобы второй пользователь никоим образом не мог получить информацию (электронную почту, кредитные карты) о предыдущем пользователе этой системы, даже если программное обеспечение типа клавиатурных шпионов каким-либо образом установлено. Как система убедилась в этом? Ну, детали не могут быть переданы, потому что это не публичная информация. но мы разработали способ всегда иметь новую операционную систему (как если бы она была недавно установлена) для нового пользователя системы. Единственная проблема заключалась в том, что нам пришлось выключить компьютер и снова запустить его, как только первый пользователь покинет машину.
И я хотел, чтобы это отключение происходило быстро (вот почему вопрос), и следующая загрузка тоже была очень быстрой, для чего я исследовал и попробовал большое количество дистрибутивов Linux от Damn Small Linux до Slackware, Debian и т. Д., Но это отдельная история.
источник
Ответы:
источник
Я не предлагаю делать следующее, если вас не принуждают действительно особые причины:
Это грубо, жестоко, и это можно считать близким эквивалентом отсоединения шнура питания ...
Правильный путь является
shutdown -h now
сsudo
до того, когда это необходимо.Может быть, я должен сказать законным путем ; смотрите ниже или лучше TL; Dr.
Еще несколько слов , история, глава I
В начале был инициат, и он будет до самого конца.
Весь Linux зависит от заботливого отношения к init [ 1 ] [ 2 ] . Тем не менее, и не без некоторой степени неблагодарности было время, когда добрый лорд- пользователь root мог предать эту любовь и внезапно
kill
начать с неопровержимым (-9
) порядком.( Книга этикета предписывает пользователям графов, герцогов и маркизов вызывать до а
sudo
).Тогда некоторые волшебники сделали заклинание, чтобы защитить init (из Книги
man 2 init
)(Наши шпионы сообщают [ U1 ], что init будет обрабатывать 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Таким образом, добрый лорд- пользователь root узнает новости и меняет команду
kill -ABRT 1
илиkill -SEGV 1
обычно генерирует паника ядра и дамп ядра.Это работает, потому что init является первым процессом, который запускается и получает PID номер 1 [ 2b ] .
Это небезопасно, неразумно, и вы чувствуете, что это предвестник дурного предзнаменования и проклятия, но если вы не можете материально возложить руки и отсоединить его ...
Проклятие : он не будет записывать в журнал, он не будет убивать все процессы и ждать их окончания, он не будет записывать на жесткий диск правильное обновление inode и не будет размонтировать файловые системы; даже не возражайте, это сохранит опции графических окон и истории оболочек, и многие другие за пределами нашего воображения ... как мы сказали, близкий эквивалент отключения сетевого шнура или аккумулятора, если ноутбук.
Правильный путь
"Non nobis, Domine, non nobis, sed nomini tuo da gloriam.", Девиз тамплиеров. Законный (правильный) способ заключается в использовании [ 3 ]
shutdown
но у
-h now
них не будет достаточно времени, чтобы сделать так много ...Еще несколько слов , ака История, Глава II
Однажды с неба над людьми из Unix чувствовались логические шаги:
Действительно, в настоящее время, мы не верим больше в существование трех Мойры [ 5 ] в мире Linux ,
reboot
,poweroff
иhalt
[ 6 ] : современная наука оls -l $(which poweroff halt reboot)
и один изman reboot
спреды новый свет на этот темный век и показать нам что существует только одна истинная команда, которая анализирует все их параметры, так что мы наконец можем запросить действия, противоречащие именам их команд! (halt -p
илиreboot -p
дляpoweroff
,shutdown -r
дляreboot
...)Теперь, когда все казалось ясным и уютным для всех, слухи утверждают , [ 7 ] , что в преступном мире в Systemd набор инструментов [ 8 ] революция была выполнена оставив не знают всю надземным . Благодаря армии прокладок обратной совместимости мы вообще не заметили, что перезагрузка, poweroff, halt [ 6 ] и даже telinit [ 9 ] и shutdown [ 3 ] уже привязаны к новому королю systemctl [ 10 ], Пожалуйста, слушайте всю историю от оригинального голоса JdeBP The Bard [ 9 ], потому что у меня больше нет дыхания.
Если вы являетесь последователями культа Ubuntu, вы все еще можете некоторое время осознавать все эти утверждения [ 11 ] .
Средняя Земля
halt -f
,init
,telinit
,systemctl
Поиск решения быстрее , чем правильные один , но также мудрый.
То, что вы находитесь под systemd или нет, вы сможете остановить компьютер, не вызывая все правильные процедуры удаления (и так быстрее):
halt -f
: указание опции-f
(обратите внимание, что вам нужно-f
избегать процедуры выключения) с помощью вышеуказанной команды, с помощьюsudo poweroff -f
или, может быть, даже сsudo reboot -f -h
. Действительно, мы можем прочитатьman reboot
(и эквиваленты) о необходимости указать опцию,-f
чтобы избежать вызова завершения работы:Кроме того, вы можете использовать
telinit
[ 2b ] (илиinit
напрямую)сказать init изменить уровень запуска ... но если так, почему бы не убить его напрямую?
В systemd вы можете использовать опцию unwise double
--force --force
Чтение из руководства systemctl [ 10 ]
Ps> Вдохновитесь вариантами из хвоста JdeBP The Bard [ 7 ] .
источник
Вы можете немедленно выключить компьютер без синхронизации дисков, написав «o» в / proc / sysrq-trigger от имени root.
Как сценарий оболочки это будет выглядеть примерно так
Если у вас есть разрешения для / proc / sysrq-trigger, вам не нужно включать его через sysctl. Эта опция влияет только на запуск с клавиатуры.
Я не рекомендую делать это на машине с любой файловой системой, которую вы хотите прочитать позже.
Я использую это в Google Compute Engine для забоя шаблонных экземпляров прямо перед десятиминутной отметкой, чтобы максимизировать рентабельность кластерных заданий, это прекрасно работает.
источник
b
вместоo
перезагрузки (актуально, так как вопрос был обновлен).Вы должны использовать комбинацию клавиш Magic SysRq
REISUB
.Повторяйте за мной: « Разводить слонов так скучно ... »
источник
Это должно работать на большинстве распространенных дистрибутивов. В отличие от
shutdown
, во многих системах вы можете выполнить это как обычный пользователь (sudo не требуется).Изменить: Дальнейшее чтение:
shutdown
иpoweroff
на Ubuntuhalt
,shutdown
иpoweroff
на системах Unixисточник
Взято с другого сайта SE:
Alt+ SysRq+ B- это мгновенная перезагрузка, а Alt+ SysRq+ O- это мгновенное отключение.
Ссылка: здесь
источник
Удерживайте кнопку питания около 4 секунд, это довольно быстро.
источник
В некоторых дистрибутивах linux shutdown предлагает опцию -n. (См. Отключение человека ). Некоторые дистрибутивы (такие как Ubuntu, который использует upstart вместо sysvinit), однако, не поддерживают его флаг, и этот флаг (как можно узнать из man-страницы) не без риска. Хотя я использую это годами (на моем ноутбуке мне все равно, что все демоны завершены должным образом, он просто хочет, чтобы все было уничтожено и мой дисковый кэш был сброшен) (это быстрее, чем обычное завершение работы, и более безопасно, чем вытягивание подключи (и друзья)). Вы могли видеть, решает ли это вашу проблему.
источник
Я использовал этот маленький скрипт, чтобы выключить систему. На самом деле он использовал это для шутки на машине «прототипирования»: «Эй, чувак, давай посмотрим, что это за классный .sh!»
(Этот сценарий имитирует то же самое, что и нажатие Alt+ SysRq+ u/ s/, oкак объяснено ранее.) Конечно, я не вызываю аварийное завершение работы системы (могут произойти сбой таблиц mysql и т. Д.), Поэтому используйте его только на фиктивных машинах. Примечание. Синхронизация может занять некоторое время. Я видел, что если в системе много свободной памяти (для кеша), и вы копируете кучу файлов на флеш-накопитель, синхронизация занимает больше времени, но я рекомендую это даже для шутки.
Редактирование: лучше использовать
sync
вместо записи 's' вsysrq-trigger
: запись 's' не будет блокировать выполнение скрипта, поэтому после запроса записи кэша на диск машина немедленно выключится. В отличие отsync
команды,sync
вернется после завершения процесса записи. Таким образом, выполнение скрипта будет заблокировано до завершения очистки кеша.источник
SEQUENCE=(s u o); for i in "${SEQUENCE[@]}"; do sleep 3; printf "${i}" > /proc/sysrq-trigger; done