这可能是一个愚蠢的问题,但答案很简单,但我在谷歌搜索了几个小时后似乎无法找到任何答案。据我所知,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.d
在init 0
系统运行正确的关机序列后在运行级别中调用...虽然您已经同步了磁盘,这解决了大部分数据损坏风险,但正确关机仍需要进行很多清理工作(FS 卸载、锁定文件等)。
您还会面临这样的风险:某个进程在sync
和halt
调用之间开始执行某些关键操作——无论您将它们链接得有多快(除非您能以某种方式保证 CPU 调度程序的行为……但您做不到)。
最佳做法是调用shutdown -h now
,它将正常停止所有进程和守护进程,卸载文件系统,并最终使系统进入相同的停止状态。然后您可以安全地切断电源。此方法还有一个好处,即调用 ACPI 电源关闭命令(在现代 ACPI 支持系统上),这会导致 PSU 切断电源(从而停止风扇和其他所有设备),而 (true) 则halt
不会发出任何 ACPI 命令,并且会使 CPU 空闲,但所有设备仍处于通电状态。
答案3
是的,这就是命令的目的halt
。它使所有活动停止。
这些命令立即关闭系统以准备关机:
- sudo关机-h现在
- 关机
- 须藤停止
- sudo init 0
注意硬盘指示灯
如果有活动,则系统仍在运行。这些命令执行后系统将立即停止。
一旦它停止闪烁,您就知道它已关闭。