“停止”和“立即关闭”之间的区别?
Ubuntu一个远程使用sudo -S -p '' halt
关闭,并且无法工作到最后。 留下监视器与消息
现在将停止
[22225.11163]停止了
sudo -S -p " halt
和sudo shutdown now
什么区别?
在这种情况下, sudo
的-S
和-p
开关并不重要。 这是他们分别做的事情。
-S
开关导致sudo
从STDIN读取密码。 例如,这允许通过echo
或cat
将密码管道传递给sudo
。
-p
开关允许您覆盖默认密码提示并使用自定义密码提示,或者根本不使用。
重要的区别在于sudo
发布的两个命令。
如果在没有
-p
开关的情况下调用halt
命令,则只需停止操作系统并停止所有CPU。 一旦系统完全停止,用户可以安全地手动点击他的计算机上的电源按钮。
poweroff
,shutdown -h now
和halt -p
命令都与单独halt
一样,同时另外发送ACPI命令以通知电源单元断开主电源。 这可以防止您必须物理按下计算机上的电源按钮。
halt
不是shutdown
,它们是不同的命令。 除非使用-p
选项,否则前者不会关闭电源
从手册( man halt
): “ – p, – poweroff:指示halt命令反而表现为poweroff。”
并且,在您的情况下, -p
未在halt
命令中使用,因此您的计算机未关闭电源。
不要将这个-p与sudo
的一个混淆,它是不同命令的不同参数。 来自man sudo
:
-
-S
-st(stdin)选项使sudo从标准输入而不是终端设备读取密码。 密码必须后跟换行符。 -
-p prompt
-p(prompt)选项允许您覆盖默认密码提示并使用自定义密码提示。
在你的情况下, prompt
为空(在询问密码时没有为sudo显示消息),-S使sudo接受root密码vi stdin(因此可以使用管道提供密码并从其他命令重定向而不是键入)
关于shutdown
和halt
问题, Unix SE站点有一个很好的答案: Halt和Shutdown命令有什么区别?
至于sudo -S -p ''
部分,这将删除有关在终端中询问密码的消息(您仍然输入密码)
例如,运行sudo
将在运行此命令之前提供此输出:
[sudo]密码:
但是运行sudo -S -p ''
将隐藏该消息。
实际上,您在引号中添加的消息正在替换先前的消息。
继续尝试以下内容,看看差异:
sudo -S -p 'Hey, I am a custom message.' ls
就用户意图而言,halt命令和关闭之间没有区别。 细微差别在于,在停止时您必须方便地按下电源按钮以关闭系统,而在shutdown命令中,它将自动指示高级配置电源接口(ACPI)向电源单元发送信号以关闭系统。