Ответы:
-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 есть хороший ответ о проблеме shutdownvs 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