Як перезавантажити та вимкнути сервери Linux?

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

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

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

У цій статті розглянуто кілька методів, які можуть допомогти вам перезавантажити або вимкнути Linux.

Інтерфейс користувача

Якщо ви використовуєте графічне середовище Linux, наприклад, Gnome, KDE, Mate, XFCE і т.д., ви знайдете кнопку живлення в меню системи або додатків, яка пропонує дії, такі як вихід із системи, перезавантаження, перехід в сплячий режим або вимкнення. Доступні опції можуть трохи відрізнятися залежно від дистрибутива, робочого середовища і версії ОС. Але ви обов’язково знайдете параметри, пов’язані з керуванням живленням, в меню, щоб змінити стан живлення системи.

Наприклад, на робочому столі Ubuntu Mate, опцію “Вимкнути” можна знайти в меню живлення у верхньому правому куті екрана.

Після вибору опції “Завершити роботу…” з’явиться діалогове вікно з декількома параметрами, такими як “Призупинити”, “Перезапустити”, “Скасувати” та “Завершити роботу”. Ви можете перезавантажити або вимкнути систему, натиснувши відповідну кнопку, або скасувати дію і повернутися до робочого середовища.

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

Команда systemctl

В Linux з ініціалізаційною системою systemd, ви можете використовувати команду `systemctl` для перезавантаження комп’ютера.

$ sudo systemctl start reboot.target

Або можна просто використати `systemctl` з відповідним параметром, наприклад, для перезавантаження:

$ sudo systemctl reboot

Для ініціювання вимкнення команда `systemctl` виглядає так:

$ sudo systemctl shutdown

Щоб зупинити систему, використовуйте:

$ sudo systemctl halt

Команда shutdown

Команда `shutdown` може використовуватись як для вимкнення, так і для перезавантаження системи Linux. Для негайного перезавантаження системи скористайтеся:

$ sudo shutdown -r now

Або, щоб вимкнути систему без затримки, скористайтеся прапорцем `-h` або `-P`:

$ sudo shutdown -P now 

Можна додати затримку до команди `shutdown`, щоб перезавантажити або вимкнути систему через заданий час. Наприклад:

$ sudo shutdown -r 10

Щоб зупинити систему, не вимикаючи живлення, можна використати прапорець `-H`:

$ sudo shutdown -H now

Якщо просто ввести команду `shutdown`, вимкнення буде заплановано на через хвилину. Для вимкнення у визначений час, скористайтеся:

$ sudo shutdown 22:30

У випадках вимкнення, система надсилає повідомлення на консоль користувачів, що ввійшли в систему. Якщо ви хочете додати власне повідомлення до цього сповіщення, можна вказати його разом з командою `shutdown`:

$ sudo shutdown 23:00 "Система вимикається на технічне обслуговування... збережіть свою роботу"

Щоб скасувати заплановане вимкнення, використовуйте прапорець `-c`:

$ sudo shutdown -c

В деяких системах команда `shutdown` викликає `systemctl` в фоновому режимі для виконання операцій перезавантаження/вимкнення.

Команда reboot

Для коректного перезавантаження системи можна також використовувати команду `reboot` (можливо, знадобиться `sudo`).

$ sudo reboot

Щоб вимкнути систему за допомогою команди `reboot`, використовуйте прапорець `-p`:

$ sudo reboot -p

Для примусового перезавантаження (для систем, що не реагують на звичайну команду `reboot`), можна спробувати прапорець `-f`:

$ sudo reboot -f

Команда halt

Щоб зупинити систему, можна просто скористатись командою `halt`:

$ sudo halt

Команда poweroff

Для вимкнення системи можна використовувати команду `poweroff`:

$ sudo poweroff

Команда init

Для систем, що не працюють на systemd, команда `init` (також працює `telinit`) пропонує параметри для зміни рівня виконання системи. Для перезавантаження системи за допомогою `init` скористайтеся:

$ sudo init 6

Аналогічно, для зупинки системи використовуйте команду `init`:

$ sudo init 0

Виклик певного рівня виконання за допомогою `init` змушує процес ініціалізації виконувати ряд сценаріїв в певному порядку, щоб забезпечити досягнення системою бажаного стану. Рівень виконання 6 призначений для перезавантаження, а рівень 0 – для зупинки системи.

Кнопка живлення

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

Для віддаленого сервера Linux, кнопка живлення зазвичай просто вимикає систему. Але ті, хто працює у віддалених центрах обробки даних, мають додаткову можливість перезавантажити або вимкнути живлення за допомогою інструментів CLI/GUI управління віддаленим вимкненням, що надають відповідні постачальники серверів.

Комбінація Alt + SysRq

У випадку, коли система не відповідає, зависла і її важко перезавантажити або вимкнути, можна спробувати натиснути Alt + PrintScreen + послідовність клавіш для миттєвого перезавантаження системи. Це не бажаний, але крайній захід.

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

Щоб цей параметр працював, він повинен бути ввімкнений у ядрі Linux. Можна перевірити це за допомогою наступної команди:

$ cat /proc/sys/kernel/sysrq

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

$ sudo echo “1” > /proc/sys/kernel/sysrq

Для перезавантаження системи за допомогою цього методу, утримуйте Alt + SysRq (PrintScreen), а потім послідовно натискайте наступні клавіші з інтервалом у декілька секунд:

R E I S U B

або для вимкнення натисніть O замість B в кінці:

R E I S U O

Ось що означають клавіші:

  • R: Переключіть клавіатуру з режиму raw на XLATE
  • E: Надішліть сигнал SIGTERM всім процесам, крім init
  • I: Надішліть сигнал SIGKILL всім процесам, крім init
  • S: Синхронізуйте всі змонтовані файлові системи
  • U: Перемонтуйте всі файлові системи як доступні лише для читання

Нарешті, маємо B або O, що означає:

  • B: Негайно перезавантажте систему, не розмонтовуючи розділи і не синхронізуючи

АБО

  • O: Негайно вимкніть систему, не розмонтовуючи розділи і не синхронізуючи

Підсумок

Отже, існує багато способів перезавантажити або вимкнути систему Linux. Надаються різні варіанти, від простих графічних інтерфейсів до відносно складних команд терміналу, які можуть спростити роботу або навіть автоматизувати її. Для систем, які зависли з тієї чи іншої причини, розглянуто примусові способи перезавантаження або вимкнення, які є неідеальними, але необхідними в рідких випадках.

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

Дізнайтеся, як налаштувати WAS, щоб він не вимагав пароль під час вимкнення, тут.