在 UNIX 上运行 halt 命令后“拔掉插头”安全吗

在 UNIX 上运行 halt 命令后“拔掉插头”安全吗

这可能是一个愚蠢的问题,但答案很简单,但我在谷歌搜索了几个小时后似乎无法找到任何答案。据我所知,halt在 UNIX(例如 BSD)和类 Unix 系统(例如 Linux)上,该命令将在调用后停止 CPU sync。我知道在大多数现代 Linux 发行版上,halt这只是调用的另一种方式shutdown,但我在笔记本电脑上安装了 FreeBSD 和 Arch Linux,这两个系统似乎都做了halt应该做的事情(停止 CPU,但不关闭 ACPI)。我的问题是,在调用

# sync;sync;sync
# halt

“拔掉插头”或切断电源(从墙上的电源插座)安全吗?呼叫后halt系统是否真正处于“关闭”状态?

奖金: 在 Arch Linux 或 FreeBSD 上调用 halt 后,我​​的电脑似乎“停止了”,好像没有响应,什么都不起作用,但我仍然可以听到风扇转动的声音。断电后风扇就停了。所以这不是问题,我只是想知道是否可能halt没有停止全部硬件,只停止CPU?

答案1

只要sync完成了,它大概拔掉电源总是可以的!

在过去的糟糕日子里,如果在磁头未停放时拔掉插头,则可能会损坏磁盘盘片,但是现在,您实际上不会造成任何硬件损坏(可能,也许……我们为了安全起见,不要这样做)。

这只会对软件造成损害。显然,在进行大型磁盘作业时拔掉电源插头是一个坏主意,但如果机器处于空闲状态,您已保存打开的文档,并且已刷新sync写入缓冲区,那么突然断电事件可能不会造成太大损害。无论如何,halt软件不会再做任何事情,因此任何可能造成的损害都已经造成了。

当然,这都是没有实际意义的,因为halt只是的同义词shutdown -H now,它将正确、正常地关闭所有正在运行的进程和服务,同步所有数据,并卸载所有文件系统。

至于其他硬件设备,它们仍然处于运行状态,处于闲置状态。屏幕将继续显示 CPU 停止前屏幕上显示的内容。风扇将继续运行,无需软件控制。磁盘将按照其可配置电源配置文件的要求运行。

事实上,根据你的机器,CPU 甚至可能不会关闭——它可能只是忙着无限循环,等待有人按下重置键。

答案2

我不建议这么做。虽然一些/大多数现代操作系统都halt使用 的别名shutdown -h now,但依赖它是一种不好的做法。

其真实形式halt是所有 CPU 活动的突然停止,并且实际上仅设计为rc.dinit 0系统运行正确的关机序列后在运行级别中调用...虽然您已经同步了磁盘,这解决了大部分数据损坏风险,但正确关机仍需要进行很多清理工作(FS 卸载、锁定文件等)。

您还会面临这样的风险:某个进程在synchalt调用之间开始执行某些关键操作——无论您将它们链接得有多快(除非您能以某种方式保证 CPU 调度程序的行为……但您做不到)。

最佳做法是调用shutdown -h now,它将正常停止所有进程和守护进程,卸载文件系统,并最终使系统进入相同的停止状态。然后您可以安全地切断电源。此方法还有一个好处,即调用 ACPI 电源关闭命令(在现代 ACPI 支持系统上),这会导致 PSU 切断电源(从而停止风扇和其他所有设备),而 (true) 则halt不会发出任何 ACPI 命令,并且会使 CPU 空闲,但所有设备仍处于通电状态。

答案3

是的,这就是命令的目的halt。它使所有活动停止。

这些命令立即关闭系统以准备关机:

  • sudo关机-h现在
  • 关机
  • 须藤停止
  • sudo init 0

注意硬盘指示灯

如果有活动,则系统仍在运行。这些命令执行后系统将立即停止。

一旦它停止闪烁,您就知道它已关闭。

相关内容