«Выключить сейчас» или «выключить-ч сейчас», чтобы выключить Raspberry Pi?

12

Я новичок в Linux (использую Raspbian) и Raspberry Pi, и мне интересно, какую из двух команд, упомянутых в названии, мне следует использовать при выключении моего Pi. Я гуглил их, но до сих пор не понимаю разницу между ними, имеет ли значение, какой я использую?

Просто какой-то парень
источник

Ответы:

13

Попробуйте набрать man shutdown. Страницы руководства предоставляют вам полный список параметров, которые может принять команда, и объяснение того, что они делают. В случае -h:

-h Запрашивает, чтобы система была либо остановлена, либо выключена после того, как она была выключена, с выбором, какой из них оставлен на усмотрение системы.

Разница между включением -hопции или нет, незначительна и не имеет значения в этом случае, так как вы все равно не можете отключить питание Pi, не отключив питание USB вручную.

Greenonline
источник
5

Документация находится в man shutdown. 1

-P, --poweroff
           Power-off the machine (the default).

[...]

-h
           Equivalent to --poweroff, unless --halt is specified.

Иногда команды имеют избыточные кажущиеся переключатели, подобные этому, потому что они должны удовлетворять спецификациям для нескольких различных контекстов. Простая логика говорит нам, что, поскольку poweroffв любом случае это значение по умолчанию, использование -hсамо по себе избыточно (опять же, оно существует для удовлетворения внешней спецификации; некоторые реализации shutdownмогут не работать таким образом по умолчанию, но будут реализованы все те, которые соответствуют -h).

Поскольку сам пи не может отключить питание (он либо включен == включен, либо нет), использовать poweroffего бессмысленно , но он не причинит никакого вреда. Это может иметь значение в том, как красный светодиод мигает в конце (вы можете сравнить с, shutdown -Hчтобы увидеть). Обратите внимание, что основная цель shutdown- остановить (остановить) запуск ОС.

Таким образом, вы можете использовать любую форму.


1. Это на самом деле из Raspbian Джесси и поставляется с systemd; это немного отличается от выключения в Raspbian wheezy (ответ Greenonline цитирует это), который является примером того, что я упоминаю в следующем параграфе о различных реализациях, соответствующих одной и той же спецификации. Процесс завершения работы на самом деле является частью системы init , которая представляет собой SysV на wheezy и systemd на jessie.

Златовласка
источник
1

я предпочитаю

sudo halt

Я не могу вспомнить, почему я выбрал это, но по какой-то причине другие команды вызывают проблемы. Это работает отлично. Для перезагрузки:

sudo restart
otah007
источник
2
Если вы выполните только это, haltэто может привести к потере данных. Намного лучше было бы sudo sync;sync;halt, так как это синхронизирует хранилище данных (т.е. жесткие диски, SD-карту) с любыми неписанными кэшированными данными, которые все еще находятся в памяти, перед остановкой системы.
Greenonline
2
@Greenonline, если вы выполняете halt с уровня запуска 0 или 6 , это может привести к потере данных. На любом другом уровне запуска это эквивалентно shutdown -h now.
Марк
1
Почему пользователи склонны игнорировать существование команды «init» в Unix-подобных ОС? init 0выключить, init 6перезагрузить
rkosegi
@Greenonline, @Mark, отныне я буду использовать shutdown -h now, даже не подозревая, что это haltопасно!
otah007