В чём между ними разница?
Казалось бы, на первый взгляд разницы нету: обе команды посылают машину в ребут. Но как они это делают – в этом собственно и состоит разница.
В статье я рассмотрю поведение для систем FreeBSD и Solaris.
FreeBSD
Как мне удалось узнать из рассылки по FreeBSD, разница заключается в следующем:
shutdown -r ждёт корректного завершения процесса столько, сколько для этого нужно процессу. Если это сервер с большой БД, то процесс этот может занять несколько минут, а может и несколько десятков минут.
reboot же просто посылает sigterm и не ждёт корректного завершения процесса (на самом деле он после посыла сигнала ждёт 30 секунд и если сервис не вложился – просто прибивает его).
И так: всегда используйте shutdown -r. НО! Если ваш сервер немного подвис и нужно его перегрузить, причём желательно поскорее, то можно использовать reboot.
Solaris
В Solaris рассмотрю такие команды (взято с сайта sunhelp.ru)
halt Команда используется для немедленного начала останова системы и от shutdown отличается тем, что не предупреждает пользователей об остановке работы. Выполняет запись кэшируемых данных на диск.
reboot Выполняется быстрее, чем shutdown, потому что не выполняет скрипты останова и не посылает сообщений пользователям; выполняет запись кэшируемых данных на диск, как и halt.
Команды halt, reboot, poweroff – не выполняют команды завершения сервисов SMF. Вместо этого они посылают всем процессам сигнал SIGTERM. После 5 секунд ожидания всем оставшимся процессам посылается сигнал SIGKILL.
То есть и в Solaris рекомендую использовать shutdown -i 6 для перезагрузки.
Один коментар до “reboot VS shutdown -r”
Интересно, так как действительно замечал разницу в скорости выполнения на FreeBSD, но не задумывался в чем разница