Почему не работает «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)системный вызов (используется для перезагрузки, отключения питания и остановки), чтобы немедленно выключить компьютер.


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

6

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


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

-1

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

sudo shutdown -a now

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

sudo shutdown -r now

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


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

@deltab Да, это то, о чем я думаю. Странно, что у меня работает shutdown -a.
NPIC
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.