Чому "shutdown -r now" поводиться інакше, ніж "reboot -f" на Debian Linux?


11

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

Але shutdown -r nowзовсім не працює. З тих пір я виявив reboot -f, що робить перезавантаження системи. Чому? Я читав сторінки чоловіка, але ніби нічого не відповідає на моє питання.

Чому shutdown -r nowповодиться інакше, ніж reboot -f?

(Я продовжую вирішувати проблему з NFS, але це не моє питання тут.)

Відповіді:


20

Зі сторінки закриття:

Після закінчення TIME завершення роботи надсилає запит демону init (8) для зведення системи у відповідний рівень запуску.

initзапускає та зупиняє завдання, коли система змінює пробіги. Під час переходу на рівень 6 через перезавантаження система запускає всі сценарії в /etc/rc6.d. Оскільки ваша система не реагує на shutdownце, ймовірно, сценарій /etc/rc6.d(можливо, K05nfs-commonвраховуючи ваші проблеми з NFS) застряг, не дозволяючи завершити послідовність відключення. Насправді, остання річ, яку виконують init при зміні на рівень 6, - це reboot -d -f -i.

reboot -f пропускає всі сценарії та перезавантажує систему безпосередньо.


Дуже дякую за зв'язок вашої відповіді з моїм контекстом.
Стю Томпсон

12

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

reboot -fз іншого боку, негайно перезавантажте сервер, не роблячи нічого з цього. ( rebootце програма initзакликає вимкнути сервер. Без -fпрапора він перевірить, чи initвважає він перезавантаження в даний час, а якщо ні, він зателефонує shutdownзамість цього, щоб запустити процес).


Дуже дякую за зв'язок вашої відповіді з моїм контекстом.
Стю Томпсон

4

Оскільки 'reboot -f' не переходить в runlevel 0 - це говорить ОС безпосередньо повторно ініціалізувати процесор. Сторінка Man на моєму найближчому вікні Linux говорить:

 -f     Force halt or reboot, don't call shutdown(8)

Сторінка "Відключення" пояснює більше.


1

Якщо ви використовуєте цю intrопцію на ваших кріпленнях NFS, тоді shutdown -r nowслід мати можливість знищувати процеси, які очікують на завершення IO NFS. Це може призвести до пошкодження файлів, але, ймовірно, не більше ніж shutdown -fстворює.

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