当前位置: 首页>>技术教程>>正文


“halt”和“shutdown now”之间的区别?

, ,

问题描述

Ubuntu一个遥控器使用sudo -S -p '' halt进行关机,但直到最后都无法使用。监视器保持打开状态

will now halt

[22225.11163] halted

sudo -S -p " haltsudo shutdown now有什么区别?

最佳解决方法

在这种情况下,用于sudo-S-p开关不重要。他们分别是这样做的。

The -S switch causes sudo to read the password from STDIN. This allows, for example, a password to be piped to sudo through echo or cat.

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, and halt -p commands all do the same thing as halt 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上,关于shutdownhalt的问题有很好的答案: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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7604.html,未经允许,请勿转载。