shutdown 和 poweroff 命令有什么区别?

shutdown 和 poweroff 命令有什么区别?

我有一个正在玩的家庭服务器:) 我想学习服务器管理...

我很难理解shutdown -h nowpoweroff -h现在之间的区别我的逻辑告诉我这是同一件事......

但关机后,Linux 停止运行,电源仍保持开启状态 - 我可以看到所有灯都亮着,冷却器也在旋转。奇怪的是,完全关闭我的盒子的唯一方法是使用poweroff -h

如能提供任何澄清,我们将不胜感激!

答案1

答案就在poweroff(8) 手册页

当使用 --force 调用或在运行级别 0 或 6 中调用时,此工具会调用 reboot(2) 系统调用本身并直接重新启动系统。否则,这只会​​调用 关机(8) 工具并使用适当的参数。

一点解释:

  • reboot() 系统调用 是用于重新启动、暂停或关闭计算机的内核函数。它reboot因历史原因而被调用,但根据传递给它的参数,它执行所有三个功能。

  • halt和之间的区别poweroff在于,在halt模式下,控制权返回到“ROM 监视器”(类似 BIOS),而 模式下则 poweroff只是关闭系统板。(我从未见过这种区别在 PC 架构上起作用;但在 Sun 机器上情况有所不同。)

  • 因此,当poweroffLinux 系统处于运行级别0 或 6,它将立即地通过系统调用关闭系统 reboot(RB_POWEROFF)

  • 在任何其他情况下,poweroff只会作为 的别名 shutdown now

答案2

对于最初的问题“shutdown”与“poweroff”:顾名思义,“shutdown”以类似“cli(); while(1);”的形式结尾,而“poweroff”以某种方式与电源进行通信,然后以与“shutdown”类似或相同的循环结束执行。(仅适用于电源出现问题的情况。)

对于 Raspberry Pi,默认情况下也是一样。但是,有一个可用的标准内核覆盖,可以通过修改 /boot/config.txt 来加载:

dtoverlay = gpio-poweroff

这会将 GPIO26(引脚 37)默认更改为高电平输出。由于默认情况下不使用此引脚,并且未使用的引脚是没有上拉/下拉的输入,因此简单的电路可以在高电平时切断电源。注意(对于电路设计者):当然,断电后此引脚将恢复为低电平!因此请使用触发器。

正如覆盖名称“gpio-poweroff”所暗示的那样,它在“poweroff”时被调用(以某种方式由 systemd 调用),而不是在“shutdown”或“halt”时。

相关内容