Чи є найшвидший спосіб відключення системи?


20

Або це shutdown -h nowнайшвидший, який він може отримати?

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

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

Ризики, пов’язані з вбивством безпосередньо всіх служб, таких як чашки / апашер / pulseaudio і т. Д. ... Мені б не було байдуже ...

зауваження: рішення повинно бути програмним забезпеченням. Натискання кнопок на пристрої - це не те, що я шукаю.


8
"Ризики, пов'язані з вбивством безпосередньо всіх служб, таких як чашки / апашер / pulseaudio і т. Д. ... Мені було б байдуже ...." -> Ви впевнені? Залишання складного програмного забезпечення в непослідовному стані може призвести до неприємних сюрпризів при наступному його використанні. Можливо, вам слід розглянути питання про відключення служб, якими ви мало користуєтесь (наприклад, чашки, апаш); ви завжди можете запускати та зупиняти ці речі вручну, коли хочете їх використовувати.
goldilocks

Метод, якого я шукаю, - це той момент, коли я хочу уникати доступу людей до мого ПК. Будь-яка затримка вимкнення дозволяє неприємності. Я досить вільні дані потім викриваю їх.
humanityANDpeace

2
Також відвідайте це
Пандія

8
Є ідея. Однак почніть заощаджувати гроші на новій техніці.
Джон У. Сміт

sudo shutdown -P 0 Я використовую це, і він запускає процес вимкнення відразу, незалежно від того, які програми відкриті
gkmohit

Відповіді:


30

Це не набагато швидше, ніж використання функцій системного запиту (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- Перезавантажте.

Цитування з чарівної Wiki Wiki :

Загальне використання магічної клавіші SysRq - це безпечна перезавантаження комп'ютера Linux, який інакше заблокований.

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

Спосіб запам'ятати це:

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

Список літератури

Чарівний ключ SysRq Вікі
Fedora SysRq


11
Важливо зауважити, що для відключення системи може знадобитися навіть менше 2 секунд. Коли я закликаю poweroffсвою машину Arch, я навіть не можу побачити, що журнал відключення друкується на екрані ...
Джон У. Сміт

Перед другим відлунням вам слід запустити sync( linux.about.com/library/cmd/blcmdl8_sync.htm ), який би переконався, що буфери записуються на диск, включаючи суперблоки.
Арседж

ви припускаєте, що це bне еход o. Чи краще b?
humanityANDpeace

Це залежить від того, що ти маєш на увазі краще. Хоча bваріант дуже швидкий, це не syncдиски, що не ідеально, є багато варіантів, які передбачають способи скорочення часу відключення, деякі більш екстремальні, ніж інші. Також є panicваріант. Прочитайте вікі та проби та помилки, щоб побачити, що найкраще відповідає вашим потребам.
geedoubleya

Добре, що на моїй накрученій системі все-таки echo o /proc/sysrq-triggerстворюється зависання. Система залишається ввімкненою. Дійсно bсистеми вже немає. Але це перезавантажує, що означає, що оперативну пам’ять можна зберегти, що є вразливістю, я б хотів, щоб bваріант зрештою був відключений. На жаль, це не працює з oможливістю в моїй системі. Дякую за пропозицію до вас , а також до @Pandya
humanityANDpeace

8

Неприємний підхід є shutdown -h -n now.

Зауважте, що це не призведе до будь-якої очистки, тому файлові системи можуть стати непослідовними, розбиватися бази даних тощо, але це дуже швидко вимикає систему.


1
дякую, це звучить цікаво: чи цей -nваріант документально зафіксований і все ще знаходиться в поточній версії відключення?
humanityANDpeace

1
Так, це стандарт. Це безпосередньо говорить ядру кинути все. Ця команда зазвичай використовується з останнього сценарію завершення роботи, коли регулярне завершення завершено.
Саймон Ріхтер

7
Але я не можу підкреслити, що це, швидше за все, спричинить погані наслідки, оскільки це в значній мірі еквівалентно витягуванню штекера.
Саймон Ріхтер

Чудово простий і ефективний. Цей варіант -n саме те, що я шукав. Дякую ТАКІ МНОГО за відповідь на запитання. Ви не знаєте, як страшно ставити запитання і чути, як шиї все говорять про те, чому ваше питання неправильне, а не просто відповісти на нього. Я б підтримав цю відповідь п'ятдесят разів, якби міг. ДЯКУЮ.
Джошуа Печ

4

Деякі дистрибутиви пропонують poweroffкоманду, яка простіша за shutdown.

Використовуючи його з:

poweroff -f

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.