«Перезагрузка» или «выключение -r сейчас»: какая команда перезагрузки безопаснее?

50

В нашей организации около 500 машин RedHat Linux.

На всех машинах мы установили приложения и службы /etc/init.d, а также серверы Oracle RAC. Мы намерены выполнять ням-обновления на всех машинах и после этого выполнить перезагрузку.

Поэтому мне было интересно, какая команда безопаснее:

reboot

или же

shutdown -r now
Dandan
источник
6
Возможный дубликат: В чем разница между перезагрузкой, init 6 и shutdown -r сейчас?
Хенрик Пингел
1
у нас все добрые - как редхат 4,5,6,7
дандан
6
Давайте перемотаем: почему вы думаете, что может быть разница в безопасности?
underscore_d
2
@underscore_d: вполне разумно думать, что это может быть команда «только для внутреннего использования», которая не выполняет все те же этапы чистого отключения. Например, может быть, один использует другой после выполнения некоторых начальных шагов чистого выключения. Конечно, справочная страница объясняет, что rebootэто просто устаревшая команда и все еще существует только для обратного компатита.
Питер Кордес
1
@knowhy Вопрос не может быть дубликатом вопроса на другом сайте ..
Безумный

Ответы:

50

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

Делай то, что тебе легче.

ewwhite
источник
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]и соответственно корректировать его поведение. Хотя это, безусловно, снижает риск непреднамеренных различий, это не является убедительным доказательством того, что нет никаких преднамеренных функциональных различий, о которых ОП может захотеть узнать.
Руах
3
Остерегайтесь предположения, что символическая ссылка подразумевает эквивалентность, особенно если в ней участвуют разные имена.
Маккензм
Руах прав - подумайте об этом на мгновение, даже если rebootвы видите символическую ссылку systemctl, вы не можете использовать ее, например, reboot status whatever.serviceкак и в случае с последней, не так ли?
благодарность
9

Использование rebootбезопаснее.

Использование rebootвашего намерения понятно, и нет способа ошибочно набрать его для чего-то еще, shutdown -t nowчто может привести к головной боли, если вы используете на удаленном сервере с ограниченным контролем.

Antzi
источник
2
ИМХО недооцененный ответ. Очень часто мы забываем, как важно ясно заявить о своих намерениях и сколько времени и ругательств это экономит в долгосрочной перспективе!
RoughTomato
1

Для современного RHEL рекомендуется использовать команду systemctl, как показано здесь : [недавние] дистрибутивы RHEL должны использовать новую команду systemctl для запуска poweroff / reboot. Как указано в руководствах по перезагрузке и выключению, они являются «устаревшей командой, доступной только для совместимости».

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

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

robocat
источник
0

Старые системы определенно делали различие между shutdownи reboot. Последний не будет закрывать службы или даже синхронизировать дисковые буферы. В гетерогенных средах - или во избежание прецедента, который может быть опасным в будущем при столкновении с другими реализациями * ix - есть смысл войти в shutdownпривычку.

user19151
источник