【概述】
Linux 系统的关机、重启是一个十分重要的系统操作,只有 root 用户才能进行 shutdown
、reboot
等命令,这是因为,Linux 是一个多用户系统,在看不到的屏幕背后,可能有许多人同时利用主机进行工作
如果不正常关机,则可能会造成文件系统的损毁,所以在正常情况下,关机要注意以下几件事:
- 查看系统使用状态,以判断是否可以关机
who
命令:查看当前系统用户netstat -a
命令:查看网络联机状态ps -aux
命令:查看后台执行程序
- 通知在线用户关机的时刻:利用
shutdown -k
向所有用户发出警告 - 正确使用关机命令:
sync
、shutdown
、reboot
、halt
、poweroff
【sync 指令】
sync
命令被用于将数据同步写入磁盘
在默认情况下,某些已经加载到内存中的数据不会被直接写回硬盘,而是暂存在内存中,但万一系统因某些特殊情况造成不正常关机时,数据尚未被写入硬盘,就会造成数据的更新不正常
sync
命令会使得尚未被更新的数据写入硬盘中,因此该命令建议在系统关机或重启前多执行几次
1 | sync |
需要说明的是,sync
命令可以被被一般用户使用,但一般用户所更新的硬盘数据只有自己的数据,root 用户可以更新整个系统的数据
此外,目前的 shutdown
、reboot
、halt
、poweroff
等命令均在关机前执行了 sync
,但多执行几次没有坏处
【shutdown 指令】
shutdown
命令是最常用的关机命令,这个命令会通知系统内的各个进程,并且将通知关闭系统中的执行等级内的一些服务
其语法规则如下:shutdown [-t sec] [-arkhncfF] time [alarm]
参数:
- -t sec:过几秒后关机
- -k:不是真正的关机,只是发送警告
- -r:将系统服务停掉后重启
- -h:将系统服务停掉后关机
- -n:不经过 init 程序,直接以 shutdown 的功能来关机
- -f:关机并开机后,强制略过 fsck 的磁盘检查
- -F:系统重启后,强制进行 fsck 的磁盘检查
- -c:取消当前在进行的 shutdown 命令
- time:指定系统关机时间,若不加入,会自动跳到 runlevel-1,即单用户维护的登录情况
- alarm:要发送的警告内容
下面给出几个含有时间参数的例子:
1 | # 立即关机 |
【reboot 指令】
reboot
命令常用于重启计算机,若系统的 runlevel 为 0 或 6,那么会重新开机,否则,会以 shutdown -r
来进行取代
其具有多个参数,在终端中使用 man reboot
即可查看,此处不再赘述
在实际应用中,一般直接执行 reboot
命令即可
【halt 指令与 poweroff 指令】
halt
、poweroff
指令都可以完成关机和重启工作,但在实际应用中很少使用,一般利用 shutdown
和 reboot
即可完成工作
在默认情况下,halt
会先调用 shutdown
,而 shutdown
会在最后调用 halt
,其中 shutdown
可以依据目前已启动的服务来逐次关闭各服务后关机,halt
能在不理当前系统状况下直接进行硬件关机
对于 poweroff
来说,其会发送一个 ACPI 信号来通知系统关机
【init 指令】
在 Linux 系统启动过程 中,介绍了 init
进程和 runlevel
值得注意的是, runlevel-0 相当于关机,runlevel-6 相当于重启
那么,可以使用 init
来指定 runlevel 从而实现关机与重启
1 | # 关机 |