Відповіді:
-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: Вказує команді зупинки замість того, щоб поводитися як poweroff."
І, у вашому випадку, -pвін не використовувався в haltкоманді, отже ваш комп'ютер не був вимкнений.
Не плутай цей -p з тим, з якого 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