“Перезавантажити” або “відключити -r зараз”: яка команда перезапуску безпечніша?


50

У нашій організації близько ~ 500 машин RedHat Linux.

На всіх машинах ми встановили додатки та служби під /etc/init.dсерверами Oracle і RAC. Ми маємо намір здійснити оновлення yum на всіх машинах і після цього перезавантажитись.

Тож мені було цікаво, яка команда безпечніша:

reboot

або

shutdown -r now


1
у нас всі добрі - як redhat 4,5,6,7
dandan

6
Давайте перемотаємось: чому ви вважаєте, що може бути різниця в безпеці?
підкреслюй_30

2
@underscore_d: нерозумно думати, що це може бути команда "лише для внутрішнього використання", яка не виконує все ті ж чисті кроки відключення. Наприклад, можливо, один використовує інший після виконання початкових кроків очищення. Звичайно, на сторінці man пояснюється, що rebootце лише застаріла команда і все ще існує лише для зворотних компат.
Пітер Кордес

1
@knowhy Питання не може бути дублікатом питання на іншому веб-сайті ..
Insane

Відповіді:


50

Для систем Red Hat функціональна різниця між rebootі не існує shutdown -r now.

Робіть все, що вам простіше.


13
Але один змушує вас набирати більше і в принципі "крутіше"!
Божевільний

Для одного потрібен суперкористувацький доступ, а інший може виконувати будь-який користувач (за винятком обмежень) з сеансу X.
Бурхан Халід

2
@BurhanKhalid Якщо у вас випадкові люди входять на X сеанси на серверах, то у вас можуть виникнути більші проблеми, ніж цікавитись, яка з двох команд "безпечніша".
CVn

1
Принаймні, про Debian (хоча я з легкістю визнаю, що не знаю про Red Hat, але відповідь Дженни Піккарайнен дозволяє припустити, що вона може бути схожою, але різною) halt, rebootі poweroffне сприймайте причин, ані часу, як пояснив Михайло Т. . Я думаю, я б вважав одним інструментом можливість зробити те, що інший не дозволяє бути «функціональною різницею».
CVn

88

Вимкнення є кращим, оскільки воно дозволяє вказати причину кардинальних дій - те, що ви завжди повинні робити. Повідомлення буде записано в журнал (и) для нащадків. Наприклад:

shutdown -r now 'Kernel upgrade requires reboot'

Ви також можете виконати заплановану перезавантаження - вказавши щось інше, ніж nowчас перезавантаження:

shutdown -r 22:00 'Work around kernel memory leak'

Тоді ваші користувачі отримуватимуть періодичні нагадування про вихід та інше - процес буде більш впорядкованим та професійним.


13

Якщо ви подивитеся, в RHEL 7 і те, /sbin/shutdownі /sbin/rebootнасправді просто посилання на systemctlкоманду systemd . Отже, використовуйте все, що завгодно. Немає функціональної різниці, як говорили ewwhite, навіть у попередніх релізах RHEL, які ще не використовували systemd.


12
Я не вважаю цей аргумент дуже переконливим: це очевидно , що /sbin/shutdownі /sbin/rebootробити НЕ поводяться так само у всіх випадках (зокрема: /sbin/shutdown! Чи не перезавантажувати за замовчуванням), так що якщо вони слінкован в той же виконуваний файл, то , що виконуваний файл необхідно вивчити його ARGV[0]і відповідно скорегувати його поведінку. Хоча це, безумовно, знижує ризик ненавмисних відмінностей, але це не є переконливим доказом того, що немає жодних навмисних функціональних відмінностей, про які, можливо, хотіла б знати ОП.
ruakh

3
Остерігайтеся припущення про симпосилання, що означає еквівалентність, особливо якщо в них є різні назви.
mckenzm

ruakh має рацію - подумайте про це на мить, навіть незважаючи на те, що rebootвона пов'язана systemctl, ви не можете використовувати, наприклад, reboot status whatever.serviceяк це було б з останнім, чи не так?
grawity

9

Використання rebootбезпечніше.

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


2
Відповідь ІМХО занижена. Дуже часто ми забуваємо, наскільки важливо зрозуміти наміри і скільки часу та ділових слів це економить у довгостроковій перспективі!
RoughTomato

1

Для сучасного RHEL вам рекомендується використовувати команду systemctl, як узагальнено тут : [недавні] дистрибутиви RHEL повинні використовувати нову команду systemctl для видачі poweroff / reboot. Як зазначено в керівництві перезавантаження та відключення, вони є "застарілою командою, доступною лише для сумісності".

Однак, якщо ви використовуєте безліч різних дистрибутивів чи розповсюдження різних виробництв, то, можливо, дотримуйтесь цього shutdown -r now 'reason for shutdown'.

Основною причиною використання rebootбуло б уникнути ризику забути додати -r під час використання shutdown -rна віддаленій машині, що може легко призвести до неможливості повторного входу та використання віддаленого адміністратора (за наявності) для перезавантаження машина.


0

Старіші системи, безумовно, розрізняли shutdownі reboot. Останні не закривали б служби або обов'язково навіть синхронізували дискові буфери. У неоднорідних середовищах - або щоб уникнути прецеденту, який може бути небезпечним у майбутньому при зустрічі з іншими * ix реалізаціями - є корисне вживання shutdownзвички.

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