Answers:
在-S
和-p
开关,用于sudo
在这种情况下并不重要。他们分别是这样做的。
该
-S
开关使sudo
从stdin读取密码。例如,这允许将密码sudo
通过echo
或传递到cat
。该
-p
开关允许您覆盖默认的密码提示,并使用自定义的密码提示,或完全不使用。
重要的区别在于发出的两个命令sudo
。
halt
如果在不使用-p
开关的情况下调用该命令,则仅停止操作系统并停止所有CPU。一旦系统完全停止运行,用户就可以安全地手动按下计算机上的电源按钮。的
poweroff
,shutdown -h now
以及halt -p
命令所有做同样的事情作为halt
单独,同时另外发送ACPI命令到信号电源单元到断开主电源。这样可以避免您必须物理按下计算机上的电源按钮。
halt
不是shutdown
,它们是不同的命令。除非使用-p
选件,否则前者不会关闭电源
在手册(man halt
)中:“ -p,--poweroff:指示halt命令代替poweroff。”
而且,你的情况,-p
是不是在使用的halt
命令,因此你的电脑是不是断电。
不要将此-p与from中的-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
shutdown -h now
也不一定要关闭电源。按照man shutdown
,它取决于系统。shutdown -H now
(请注意的上限H
)是保证等于halt