为什么要将关机方法呢?不是直接拔掉电源或者直接“x”掉不就关了吗?这种“暴力”的方法在 Windows 下是可以偶尔用一下的,但是在 Linux 下不建议这么做。因为 Windows 是单人假多任务,关机不会对别人有影响。而 Linux 是可能有很多人同时工作,直接关机会对别人产生影响。另外,最大的问题是若不正常关机,则可能会对文件系统造成损坏(因为来不及将数据传回到文件)。
所以我们需要了解几个常用的关机/重启相关的指令:
- 将数据同步写入硬盘中的指令:sync
- 惯用的关机指令:shutdown
- 重新开机,关机:reboot,halt,poweroff
Tips 由于 Linux 系统的关机/重启是很重大的系统运行,所以很多 distributions(发行版)只有 root 才有权限进行 shutdown
,reboot
等指令。
sync
由于所有的数据都得被读入内存后才能够被 CPU 所处理,但是数据又常常需要由内存写回到硬盘中(例如存储的动作)。由于硬盘相对与内存太慢,如果常常让数据在内存和硬盘之间来回写入/读出,系统的性能就不会太好。
因此在 Linux 系统中,为了加快数据的读取速度,在默认情况下,某些已经载入内存中的数据将不会直接写入硬盘,而是先暂存在内存中。如此一来就会加快系统的速度。
不过这样在不正常关机时,由于数据没有被写入磁盘,会导致数据的更新不正常。这个时候输入 sync
这个指令就能进行数据的写入动作了。不过最好多执行几次保险一点。
Tips sync
也能被一般账号使用,只不过一般账户只能更新自己的数据,而 root 可以更新整个系统的数据。
shutdown
由于关机很重要,所以除了在主机面前以实体终端机来登录系统时,用什么身份都能关机外,若用远端管理工具(如通过 MobaXterm 通过 SSH 服务来从其他计算机登录主机),那关机只有 root 有权限。
shutdown
可以达成以下工作:
- 自由选择关机模式:关机或者重新启动
- 设置关机时间
- 自定义关机信息:在关机之前,将自己设置的信息传给线上的 user
- 仅发出警告讯息:若你想要进行一些测试而不想其他人干扰,或是警告一下别人,可以用而不是真的关机
shutdown
常用的参数有:
shutdown [-krhc] [时间] [警告讯息]
-k # 不要真的关机,只是发送警告讯息
-r # 在将系统的服务停掉之后,重启开机
-h # 在将系统的服务停掉之后,立即关机
-c # 取消已经在进行的shutdown指令内容
时间 # 指定系统关机的时间,若没有就默认1分钟以后
范例:
![[5-1 shutdown指令.png]]
通过上面的范例,系统将会在 10:23 关机,并且给线上的 user 发送了“我要关机了”的讯息。由于当前的时间是 17:30,所以将会在第二天的 10:23 关机。
reboot. halt, poweroff
通常想要重新启动会运行下面的指令:
sync; sync; sync; reboot
这些指令都是关机和重启,那么有什么区别?其实没啥区别🤣(都是调用 systemctl 这个重要的管理命令)。所以只需要记住一个就好了。
halt # 系统停止,屏幕可能会保留系统已经停止的讯息
poweroff # 系统关机,因为没有提供额外的电力,屏幕空白
实际使用的管理工具 systemctl 关机
目前所有服务的管理使用的是 systemctl
这个指令,这个指令很复杂后面会详细讲到。上面谈到的 halt,,poweroff,reboot,shutdown 等等,其实都是调用的 systemctl 这个指令。这个指令关机相关的语法有:
halt # 进入系统停止的模式,屏幕可能会保留一些讯息,这与你的电源管理模式有关
poweroff # 进入系统关机模式,直接关机没有提供电力喔!
reboot # 直接重新开机
suspend # 进入休眠模式
systemctl reboot # 系统重新开机
systemctl poweroff # 系统关机