Ubuntu 的一个远程功能用于sudo -S -p '' halt
关机,但无法正常工作。显示器打开并显示消息
将立即停止
[22225.11163] 已停止
sudo -S -p " halt
和有什么区别sudo shutdown now
?
答案1
在这种情况下, 和 开关不重要-S
。下面是它们分别的作用。-p
sudo
该
-S
开关使从 STDIN 读取密码。例如,这允许通过或sudo
将密码传输到。sudo
echo
cat
该
-p
开关允许您覆盖默认密码提示并使用自定义密码提示,或者根本不使用密码提示。
重要的区别在于 发出的两个命令sudo
。
halt
如果不使用开关调用该命令-p
,则只会暂停操作系统并停止所有 CPU。一旦系统完全停止,用户就可以安全地手动按下计算机上的电源按钮。
poweroff
、shutdown -h now
和命令halt -p
都与单独执行的操作相同halt
,同时还发送 ACPI 命令以向电源单元发出信号断开主电源。这样就无需手动按下计算机上的电源按钮。
答案2
halt
不是shutdown
,它们是不同的命令。前者不会关闭电源,除非-p
使用选项
摘自手册(man halt
):“-p,--poweroff:指示 halt 命令改为按照 poweroff 的方式运行。”
就你的情况来说-p
,不是在命令中使用halt
,因此你的计算机不是關閉電源。
不要将这个 -p 与 中的 -p 混淆sudo
,它是不同命令的不同参数。来自man sudo
:
-S
-S(stdin)选项使 sudo 从标准输入而不是终端设备读取密码。密码后面必须跟一个换行符。-p prompt
-p(提示)选项允许您覆盖默认密码提示并使用自定义密码提示。
在您的情况下,prompt
为空(询问密码时 sudo 不显示任何消息),并且 -S 使 sudo 接受 root 密码 vi stdin(因此可以使用管道和重定向从其他命令提供密码,而不是输入)
答案3
有一个很好的答案Unix SE 站点关于shutdown
vshalt
问题:停止 (Halt) 和关闭 (Shutdown) 命令之间有什么区别?
至于部分sudo -S -p ''
,这将删除有关在终端中询问密码的消息(但您仍然需要输入密码)
例如,sudo <some_command>
在运行此命令之前,运行将给出以下输出:
[sudo] 密码:
但跑步sudo -S -p '' <some_command>
会隐藏该信息。
事实上,您在引号中输入的消息正在替换之前的消息。
继续尝试以下操作,看看有什么不同:
sudo -S -p 'Hey, I am a custom message.' ls
答案4
从用户意图来看,halt 命令和关机没有区别。细微的区别在于,halt 需要你方便地按下电源按钮才能关闭系统,而关机命令会自动指示高级配置电源接口 (ACPI) 向电源单元发送信号以关闭系统。