Почему не работает «sudo shutdown now»?

87

Когда я выдаю следующее:

sudo shutdown now

..новременно запущенный сервер Ubuntu 14.04 не выключается. Останавливается со следующим сообщением:

* Stopping System V runlevel compatibility
Give root password for maintenance:
(or type Control-D to continue):

Если я ввожу пароль root, машина просто сидит там в приглашении оболочки.

Джон Кейдж
источник
5
Близкие избиратели: это не дубликат. Хотя вопросы похожи, один задает конкретную команду, другой - общий способ выключения машины из командной строки.
Сет

Ответы:

138

Традиционно команда sudo shutdown nowпереведет вас на уровень запуска 1 (режим восстановления); это будет происходить как для Upstart, так и для SysV init. Чтобы получить то, что вы хотите, то есть, чтобы правильно выключить компьютер, вам нужно дать -hпереключатель shutdown.

Здесь следует отметить, что haltвсе процессы будут закрыты, выключены процессоры и возвращено управление монитору ПЗУ материнской платы, когда пользователю необходимо нажать кнопку питания, чтобы отключить питание, тогда как poweroffпосле выключения процессоров просто отключит электропитание, что приведет к правильному отключению.

-hПереключатель shutdownлибо haltили poweroffкомпьютер, то решение будет принято в системе , хотя в Ubuntu я видел , что это было бы нормально poweroffмашина. Чтобы быть уверенными в том, что вы можете использовать -Pпереключатель с shutdownк poweroffкомпьютеру.

Подводя итог, вот команды, доступные poweroff( не halt ) компьютеру:

sudo shutdown -h now
sudo shutdown -P now
sudo poweroff
sudo halt -p
sudo init 0

Эти poweroffи haltкоманды в основном ссылаться shutdown(за исключением poweroff -f). sudo poweroffи sudo halt -pточно так же, как sudo shutdown -P now. Команда sudo init 0перенесет вас на уровень запуска 0 ( завершение работы ).

А что если вы хотите принудительно завершить работу, то есть не хотите ждать нормального закрытия процессов? В этом случае вы можете использовать:

sudo poweroff -f

Это не будет использовать shutdown. Скорее, он вызовет reboot(2)системный вызов (используется для перезагрузки, отключения питания и остановки), чтобы немедленно выключить компьютер.

heemayl
источник
2
Или совместите выключение «сейчас» с «выключением»:sudo shutdown -P now
david6
3
Что вы подразумеваете под «принудительное отключение»? Согласно справочной странице , -fопция просто пропускает fsckперезагрузку. И согласно справочной странице Ubuntu, такой опции нет вообще.
Руслан
1
@Ruslan: Возможно, путать его с halt -f/ poweroff -f, который обходит init и говорит ядру напрямую отключить питание. То есть убедительный.
Гравитация
1
Мой ноутбук спасибо тебе! Я был фактически одержим этим и просто всегда использовал кнопку питания, но теперь я знаю! Остановка поддерживала мою систему включенной, но выключение фактически отключало ее. Большое спасибо! :-)
Terrance
1
@RGG Я бы порекомендовал вам выполнить syncперед этой командой, так как эта команда обходит все, что еще может быть в кеше. syncпринудительно запишет кешированные записи на диск, затем вы сможете отключить его.
Терренс
15

Я уверен, что правильная команда должна содержать опцию "-h" (halt). Попробуй это:

sudo shutdown -h now
pille1842
источник
6

Это наследие тех дней, когда физическая машина не могла выключиться сама по себе. Например, команда halt sudo haltзавершает все программы и выгружает почти все из оперативной памяти, готовые к отключению. Однако, если вы запустите sudo halt -p, он сделает все это, затем подаст сигнал на отключение системы, или, в случае shutdownкоманды, вам понадобится -aопция, я полагаю, хотя я лично использую halt.

Джон Кейв
источник
Что произойдет, если я всегда выключаю компьютер этой командой?
Nullpointer
-1

Я всегда использовал следующее

sudo shutdown -a now

или перезагрузить сразу после выключения

sudo shutdown -r now

Если посмотреть на параметр справки по завершению работы, в нем не указана -a как правильная команда, но я мог бы поклясться давным-давно, что он был прерван или что-то подобное В любом случае, я продолжал использовать это, и это работало все эти годы, но похоже, что выключение - теперь это правильный вариант.

NPIC
источник
1
Возможно, вы думаете о команде Windows shutdown /a, которая прерывает завершение работы (эквивалентно shutdown -cUbuntu).
Дельтаб
@deltab Да, это то, о чем я думаю. Странно, что у меня работает shutdown -a.
NPIC