Недавно мне пришлось столкнуться с неприятной, периодически возникающей проблемой точки монтирования клиент / сервер NFS. Когда проблема возникает на клиенте, я не могу размонтировать ее вместе с каким-то другим странным поведением. Единственное немедленное решение, которое у меня есть на сегодняшний день, - это перезагрузить клиентский компьютер
Но shutdown -r now
не работает вообще. С тех пор я обнаружил reboot -f
, что делает перезагрузку системы. Почему? Я прочитал справочные страницы, но, похоже, ничего не отвечает на мой вопрос.
Почему shutdown -r now
ведет себя иначе, чем reboot -f
?
(Я продолжаю решать проблему NFS, но это не мой вопрос здесь.)
shutdown
поручаетinit
начать процедуру выключения, которая включает в себя уведомление вошедших в систему пользователей о том, что система завершает работу, изящное завершение всех процессов, размонтирование и синхронизация дисков и так далее. Вы застряли здесь, потому что процессы, застрявшие в ожидании ввода-вывода, очень трудно убить, а застрявшее монтирование NFS не может быть размонтировано.reboot -f
с другой стороны, немедленно перезагружает сервер, ничего не делая. (reboot
программаinit
вызывает отключение сервера. Без-f
флажка она проверит,init
считает ли она, что в данный момент перезагружается, и если нет, тоshutdown
вместо этого она вызовет процесс).источник
Поскольку 'reboot -f' не переходит на уровень выполнения 0 - он говорит операционной системе непосредственно инициализировать процессор. Страница руководства на моем ближайшем Linux-боксе гласит:
Страница man shutdown объясняет больше.
источник
Если вы используете
intr
опцию на своих монтируемых NFS, тоshutdown -r now
сможете убивать процессы, ожидающие завершения NFS IO. Это может привести к повреждению файла, но, вероятно, не более, чемshutdown -f
создает.источник