Есть ли самый быстрый способ выключить систему?

20

Или это shutdown -h nowсамый быстрый способ получить?

Я ищу какой-нибудь системный вызов или аналогичный, который позволит пропустить много вещей, сделанных до выключения (в частности, чтобы заботиться о запущенных процессах).

В лучшем случае я хотел бы получить решение, связанное с ядром, поскольку оно не знает о init-middleware (например, systemdили upstart).

Риски, связанные с непосредственным уничтожением всех сервисов, таких как cups / apache / pulseaudio и т.д ... Мне было бы все равно ....

Замечание: решение должно быть программно-порочным. Нажатие кнопок на устройстве это не то, что я ищу.

humanityANDpeace
источник
8
«Риски, связанные с непосредственным уничтожением всех сервисов, таких как cups / apache / pulseaudio и т. Д., Мне было бы все равно…» -> Вы уверены? Оставление сложного программного обеспечения в несогласованном состоянии может привести к неприятным сюрпризам при следующем использовании. Возможно, вам стоит подумать об отключении служб, которыми вы не пользуетесь (например, cups, apache); вы всегда можете запускать и останавливать эти вещи вручную, когда вы действительно хотите их использовать.
Златовласка
Метод, который я ищу, - это момент, когда я хочу избежать доступа людей к моему ПК. Любая задержка в отключении позволяет вредить. Я скорее теряю данные, затем выставляю их.
человечествоANDpeace
2
Также посетите это
Pandya
8
Есть идея. Начните копить деньги на новое оборудование.
Джон У. С. Смит,
sudo shutdown -P 0 Я использую его, и он сразу же запускает процесс завершения работы, независимо от того, какие приложения открыты
gkmohit

Ответы:

30

Это не становится намного быстрее, чем использование функциональности System Request (SysRq) и последующее немедленное срабатывание reboot.

Это комбинация клавиш, понятная ядру.

Включить SysRq:

echo 1 > /proc/sys/kernel/sysrq

Теперь отправьте его в перезагрузку.

echo b > /proc/sysrq-trigger

b - Немедленно перезагрузите систему, не отключая и не синхронизируя файловые системы.

Заметка:

Хотя это так, rebootон будет вести себя как отключение питания, что не рекомендуется.

Если вы хотите syncи umountфайловые системы перед этим, используйте:

echo s > /proc/sysrq-trigger
echo u > /proc/sysrq-trigger

или если вы просто хотите выключить систему, то:

echo o > /proc/sysrq-trigger

Волшебные комбинации клавиш

Есть также комбинации клавиш для использования, которые интерпретируются ядром:

Alt+ SysRq / Print Screen+Command Key

Командные клавиши:

R- Возьмите управление клавиатурой обратно из X.
E- Отправьте SIGTERM всем процессам, позволяя им завершить работу изящно.
I- Отправить SIGKILL на все процессы, заставляя их немедленно прекратить.
S- Записать данные на диск.
U- Перемонтировать все файловые системы только для чтения.
B- Перезагрузка.

Цитирование из Magic SysRq Key Wiki :

Обычное использование волшебного ключа SysRq - безопасная перезагрузка компьютера с Linux, который в противном случае был заблокирован.

  1. Нажмите Altи удерживайте SysRqклавиши и (экран печати).
  2. Удерживая их, введите следующие ключи по порядку, с интервалом в несколько секунд: REISUB .
  3. Компьютер должен перезагрузиться.

Способ запомнить это:

" R Eboot E Вен I е S ystem U tterly B roken" или просто слово " занят " чтение в обратном направлении.

Ссылки

Волшебный ключ SysRq Wiki
Fedora SysRq

geedoubleya
источник
11
Важно отметить, что для отключения чистой системы может потребоваться даже менее 2 секунд. Когда я звоню poweroffна свою машину Arch, я даже не вижу распечатки журнала выключения на экране ...
Джон У. Смит,
Перед вторым эхом вы захотите запустить sync( linux.about.com/library/cmd/blcmdl8_sync.htm ), что обеспечит запись буферов на диск, включая суперблоки.
Arcege
Вы предполагаете, что bсущество не повторяется o. Б лучше?
человечествоANDpeace
Это зависит от того, что вы подразумеваете под лучше. Хотя bопция очень быстрая, она не работает syncс дисками, что не является идеальным, есть много опций, которые предоставляют способы сокращения времени выключения, некоторые более экстремальные, чем другие. Также есть panicвариант. Прочитайте вики и метод проб и ошибок, чтобы увидеть, что лучше всего соответствует вашим потребностям.
geedoubleya
Хорошо на моей испорченной системе echo o /proc/sysrq-triggerэто создает зависание. Система остается включенной. Действительно bсистема исчезла. Тем не менее, он перезагружается, что означает, что ОЗУ может быть сохранено, что является уязвимостью, и я хотел бы, bчтобы система была отключена в конце. К сожалению, это не работает с oопцией в моей системе. Спасибо за предложение вам, а также @Pandya
humanityANDpeace
8

Противный подход есть shutdown -h -n now.

Обратите внимание, что это не приведет к какой-либо очистке, поэтому файловые системы могут стать непоследовательными, сломаться базы данных и т. Д., Но это очень быстро отключит систему.

Саймон Рихтер
источник
1
спасибо, это звучит интересно: -nдокументирована ли эта опция и все еще в текущей версии завершения работы?
человечествоANDpeace
1
Да, это стандартно. Это прямо говорит ядру отбросить все. Эта команда обычно используется из последнего сценария выключения, когда обычное завершение завершено.
Саймон Рихтер
7
Но я не могу не подчеркнуть, что это, скорее всего, вызовет плохие последствия, поскольку это в значительной степени эквивалентно потянув за вилку.
Саймон Рихтер
Удивительно просто и эффективно. Эта опция -n именно то, что я искал. Большое вам спасибо за ответ на вопрос, как и спросили. Вы не знаете, как неприятно задавать вопрос и слышать, как бородатые ребята говорят вам, почему ваш вопрос неправильный, вместо того, чтобы просто отвечать на него. Я бы проголосовал за этот ответ пятьдесят раз, если бы мог. СПАСИБО.
Джошуа Печ
4

Некоторые дистрибутивы предлагают poweroffкоманду, которая проще, чем shutdown.

Используя это с:

poweroff -f

выполнит синхронизацию диска и затем выключит питание. Это хороший компромисс между быстродействием и минимальным отключением, чтобы гарантировать, что файловые системы не повреждены.

Vality
источник
0

Попробуйте использовать команду init:

init 0
Stuxnet78
источник