Відповіді:
-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 є хороша відповідь щодо випуску 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