Difference between "halt" and "shutdown now"?
The -S
and -p
switches for sudo
have no importance in this case. Here is what they do, respectively.
The
-S
switch causessudo
to read the password from STDIN. This allows, for example, a password to be piped tosudo
throughecho
orcat
.The
-p
switch allows you to override the default password prompt and use a custom one, or none at all.
The important difference is in the two commands being issued by sudo
.
The
halt
command, if invoked without the-p
switch, simply halts the OS and stops all CPUs. Once the system is cleanly halted, the user may safely hit the Power button on his computer manually.The
poweroff
,shutdown -h now
, andhalt -p
commands all do the same thing ashalt
alone, while additionally sending an ACPI command to signal the power supply unit to disconnect the main power. This prevents you from having to physically push the Power button on your computer.
halt
is not shutdown
, they are different commands. The former does not turn the power off, unless -p
option is used
From the manual (man halt
): "-p, --poweroff : Instructs the halt command to instead behave as poweroff."
And, in your case, -p
was not used in the halt
command, hence your computer was not powered off.
Do not confuse this -p with the one from sudo
, it's a different parameter for a different command. From man sudo
:
-
-S
The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device. The password must be followed by a newline character. -
-p prompt
The -p (prompt) option allows you to override the default password prompt and use a custom one.
In your case, prompt
is empty (no message displayed for sudo when asking password), and -S makes sudo accept root password vi stdin (so password may be supplied using pipes and redirection from other commands instead of being typed)