Ответы:
-S
И -p
выключатели для sudo
не имеет никакого значения в данном случае. Вот что они делают соответственно.
-S
Переключатель приводитsudo
прочитать пароль из STDIN. Это позволяет, например, передать парольsudo
черезecho
илиcat
.
-p
Переключатель позволяет изменить пароль по умолчанию подсказки и использовать пользовательские один, или вообще.
Важное различие заключается в двух командах, выдаваемых sudo
.
Команда
halt
, если она вызывается без-p
коммутатора, просто останавливает ОС и останавливает все процессоры. После полной остановки системы пользователь может безопасно нажать кнопку «Питание» на своем компьютере вручную.В
poweroff
,shutdown -h now
иhalt -p
все команды делают то же самое , как вhalt
одиночку, в то время как дополнительно посылает команду ACPI для сигнала блока питания , чтобы отключить питание. Это предотвращает необходимость физического нажатия кнопки питания на вашем компьютере.
halt
нет shutdown
, это разные команды. Первый не отключает питание, если -p
не используется опция
Из руководства ( man halt
): «-p, --poweroff: указывает команде halt вести себя как poweroff».
И, в вашем случае, не-p
был использован в команде, следовательно, ваш компьютер не был выключен.halt
Не путайте этот параметр -p с параметром from sudo
, это другой параметр для другой команды. От man sudo
:
-S
Опция -S (stdin) заставляет sudo читать пароль со стандартного ввода вместо оконечного устройства. За паролем должен следовать символ новой строки.-p prompt
Параметр -p (подсказка) позволяет переопределить запрос пароля по умолчанию и использовать пользовательский.В вашем случае prompt
он пуст (сообщение sudo не отображается при запросе пароля), а -S заставляет sudo принять пароль root vi stdin (поэтому пароль может быть введен с использованием каналов и перенаправления из других команд вместо ввода)
На сайте Unix SE есть хороший ответ о проблеме shutdown
vs halt
: в чем разница между командами Halt и Shutdown?
Что касается sudo -S -p ''
части, это удалит сообщение о запросе пароля в терминале (Вы все еще должны ввести свой пароль, хотя)
Например, выполнение sudo <some_command>
передаст этот вывод перед выполнением этой команды:
[sudo] пароль для:
Но бег sudo -S -p '' <some_command>
будет скрывать это сообщение.
На самом деле сообщение, которое вы помещаете в кавычки, заменяет предыдущее сообщение.
Попробуйте и попробуйте следующее, и увидите разницу:
sudo -S -p 'Hey, I am a custom message.' ls
Нет никакой разницы между командой остановки и выключением с точки зрения намерения пользователя. Тонкая разница заключается в том, что при остановке вы должны удобно нажимать кнопку питания, чтобы выключить систему, тогда как в команде выключения он автоматически выдаст команду Расширенному интерфейсу конфигурации питания (ACPI) отправить сигнал на блок питания для выключения системы.
shutdown -h now
не обязательно выключать питание либо. Согласноman shutdown
, это зависит от системы.shutdown -H now
(обратите внимание, что заглавные буквыH
включены) - это тот, который гарантированно эквивалентенhalt