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


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.