问题描述
Ubuntu一个遥控器使用sudo -S -p '' halt
进行关机,但直到最后都无法使用。监视器保持打开状态
will now halt
[22225.11163] halted
sudo -S -p " halt
和sudo shutdown now
有什么区别?
最佳解决方法
在这种情况下,用于sudo
的-S
和-p
开关不重要。他们分别是这样做的。
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.
重要的区别在于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
不是shutdown
,它们是不同的命令。前者不会关闭电源,除非使用了-p
选项
从手册(man halt
):“ -p,–poweroff:指示halt命令代替poweroff。”
而且,对于您而言,halt
命令中未使用-p
,因此您的计算机没有关闭电源。
不要将此-p与sudo
的-p混淆,对于不同的命令,它是不同的参数。从man sudo
:
-
-S
-S(stdin)选项使sudo从标准输入而不是从终端设备读取密码。密码后必须带有换行符。 -
-p prompt
-p(提示)选项使您可以覆盖默认密码提示并使用自定义提示。
在您的情况下,prompt
为空(询问密码时,不显示sudo消息),并且-S使sudo接受root标准vi stdin(因此,可以使用管道和其他命令的重定向来提供密码,而不用键入密码)
第三种解决方法
在Unix SE site上,关于shutdown
与halt
的问题有很好的答案:What is the difference between Halt and Shutdown commands?
至于sudo -S -p ''
部分,这将删除有关在终端中询问密码的消息(尽管您仍然输入密码)
例如,运行sudo <some_command>
将在运行以下命令之前给出以下输出:
[sudo] password for :
但是运行sudo -S -p '' <some_command>
将隐藏该消息。
实际上,您在引号中添加的消息将替换先前的消息。
继续尝试以下操作,看看有什么不同:
sudo -S -p 'Hey, I am a custom message.' ls