1. 关机命令知多少
对于 Linux 电脑,正常情况下你是如何关机的?想必大家应该都是类似这样操作:
但是,对于很多服务器,它们并没有 GUI 界面,或者很多服务器我们是通过 SSH 来远程操作,那么我们只能通过命令行来进行关机。Linux 和类Unix 系统(如macOS)都为大家提供了几个命令来从命令行关闭或重启系统,一般有下几个命令:
- shutdown
- halt
- reboot
- poweroff
这些命令从汉语字面意义来看,多少有些相似,可能会让人觉得困惑。但是如果使用一些相应的选项,所有这些命令都可以执行关机、重启和挂起等操作。但实际上,你用 man 命令来查看这几个命令的用法,出来的结果都是一样的,如下图所示。
为什么会是这样的情况呢?我们要从这几个命令的渊源说起。
2. 深挖关机命令历史
为什么那几个关机命令的 man page 都一样?其实原因很简单,就是因为 Systemd 系统取代了古老的 system v init 系统。在 Linux 世界中,Fedora 在 2011 年开始使用 init 引导程序,从那以后许多发行版开始纷纷效仿。
但是,Debian 和 Ubuntu 于 2015 年开始切换到 Systemd 引导程序。
在基于 Systemd 的发行版上,shutdown、reboot、halt 和 poweroff 命令实际上都是指向 systemctl 命令的快捷方式。为了保持与基于 system v init 的发行版的兼容性,Systemd 系统保留了这些命令。
3. 关机命令使用详解
一台服务器通常会有多人一起使用,所以如果需要关闭或重启的话,我们需要提前做好计划,否则擅自关机的话会分分钟被同事打进 ICU 。
接下来,我们来重点讲解 shutdown 命令的用法。
所以,为了避免被揍,我们需要在关机之前告知所有已经登录的用户,提醒他们做好保存的工作。比如,我们打算从现在开始 15 分钟后关闭系统,需要键入如下命令:
$ shutdown 15 Shutting down in 15 minutes!