Linux系统的关机重启和注销
关机和重启命令
Linux的关机和重启命令有很多个,如:shutdown、init、halt、poweroff、reboot。这些命令的单词含义显而易见,一看就可以知道是关机和重启的意思,但配合命令后面的参数,除了字面上的意思外,有些也可以做到关机和重启都可以使用同一个命令。在生产环境中最常用的命令是shudown和reboot。
shutdown命令
shutdown命令是Linux系统中用于安全关闭或重启系统的命令,命令在关闭系统之前会通知所有的登陆用户,系统将于何时进行关闭或者重启的操作,并且从通知发出到执行完毕期间禁止新的用户登陆操作,仅给已经登录的用户做数据备份和退出登录操作。shutdown命令会根据接收到的参数执行关机或者重启的指令。
下图是shutdown命令的帮助信息
可以看到,命令的格式是这样的shutdown [OPTIONS...] [TIME] [WALL...],也就是shutdown 参数 时间 通知消息内容这样的格式。命令后面的各种参数通过空格分隔。通知消息的内容为非必选项,可以不用。
具体的参数在下表中列出
| 参数说明 | 解释说明 |
|---|---|
| --help | 显示这个命令的帮助信息 |
| -H --halt | -H等价于--halt命令,该命令虽然关闭了系统,但是机器仍处于通电的状态,需要手动断电,不常用这个参数。 |
| -P --poweroff | -P等价于--poweroff命令,顾名思义,poweroff就是断电关机的意思,该参数就是立即关机 |
| -r --reboot | -r等价于--reboot命令,是重启的常用命令 |
| -h | 这个参数是常用的参数,它虽然是h,但是和上面的大写H的halt命令不同,它是等价于--poweroff,也就是-h和-P的效果是一样的 |
| -k | 只是发送关机的警告信息,并拒绝新的用户登陆操作,但是它不会执行poweroff或者halt开实际关机,属于极其不常使用到的一个参数。 |
| --no-wall | 添加这个参数则在执行poweroff或者halt的时候,不会发送警告的信息。不建议在不通知其他用户就直接关机或重启 |
| -c | 取消正在执行的shutdown指令, |
注意:Linux系统是区分大小写的,如上面表中的H和h,就是两个不同的指令参数。关于大小写的这点,很多用过其他不区分大小写的系统的初学者,容易因为没有注意到这点而出错。
常用的命令例子:
- 不添加任何参数关机
shutdown
shutdown命令在不添加任何参数的时候,也可以正常的执行,因为不添加参数就默认是1分钟后关机。
- 指定时间重启
shutdown -r 16:12
-r表示重启,后面的24小时制的时间表示执行重启指令的时间,该命令的在输入完成后,可以通过Ctrl + c或者shutdown -c来取消。-h也是同理
- 最最常用的立即重启或立即关机
shhutdown -h now
shutdown -r now
now就是现在,所以时间设为现在就是立即执行。
init命令
init 命令是 Linux 下的进程初始化工具。
init 进程是所有 Linux 进程的父进程,它的进程号为1。init 命令是 Linux 操作系统中不可缺少的程序之一,init 进程是 Linux 内核引导运行的,是系统中的第一个进程。
注:现在的Linux系统大多数的发行版本的启动已经从init改为systemd,所以如果使用pstree查看进程,第一个进程变成了systemd。init的功能在系统中还是被保留下来。
在命令行中查看init命令的帮助信息,得到如下的结果:
从图中可以看到,命令的格式是init [OPTIONS...] {COMMAND},而命令的说明是向init守护进程发送控制命令。常用的命令参数就是0~6所代表的Linux7个运行级别,他们分别是:
- 0 停机
- 1 单用户模式
- 2 多用户模式(没有 NFS(Network File System))
- 3 完全多用户模式(有 NFS),登录后进入控制台命令行模式
- 4 系统保留未使用
- 5 图形界面
- 6 重新启动
因此,使用init命令来开关机的命令如下:
- 重启系统
init 6 - 关机
init 0
halt、poweroff、reboot命令
通过查看halt、poweroff、reboot这三个命令的帮助信息,会发现这三个命令都帮助信息内容都是一模一样,而且最后一句的说明都是指向了说明文档的halt的内容。如下图所示。
虽然这三个命令也都有参数选项,但是在实际的运用中,都是不使用参数直接使用的。基本上也就reboot使用的比较多。halt命令只关闭操作系统,在执行完成后还需要手动给机器进行断电的操作,poweroff则可以执行到断电的状态。这两个命令的使用率偏低,大家基本都是通过shutdown命令来执行关机操作的。reboot的重启指令就相对使用的多一点点。
在debian一系的系统中,通过查看这三个文件的属性,可以发现这三个命令都是/bin/systemctl命令的连接而已。

注销命令
注销命令的使用频率不高,因针对Linux的管理和使用,大多数时间是通过ssh软件远程进行ssh连接或者vnc连接,且Linux系统支持一个用户名通过多用户登陆。对数时候,使用者都是直接关掉远程连接的软件就当作注销了用户,ssh的连接确实是会在连接终端的时候或退出终端的时候注销用户的登陆。但在用户从一个A账号切换到B账号后,也可以通过注销来返回到A用户。
注销的命令常用的是logout或者exit。它不像重启或者关机的命令一样有多个参数,直接输入命令后按回车即可完成注销的动作,无论是桌面界面还是命令行界面注销后都会回到登录用户名的界面。又有一种例外,就是你在命令行模式中登录了A账号,然后在A账号的工作空间中登录到B账号、C账号这种嵌套形式的登陆,如果不是在最外层的账号中,注销则是退出最里面一层的登录。直到退到最外一层被注销才回到登录界面。
Linux的命令行模式就是这么神奇,可以嵌套这去登陆多个账号。但是一般没有人会无聊到去登陆三四层账号。
下图是两种登录界面截图:


命令列表
下表中整理了上面讲述的各个关机、重启和注销的命令 | 命令 | 说明 | |-----|:-----| |关机命令|| |shutdown -h now | 立即关机 | |shutdown -h +1 |1分钟以后关机,1也可以是其他的数字或者可以是一个指定的时间,例如:shutdown -h +100 表示100分钟后关机; shutdown -h 23:23 表示将在23点23分的时候关机。| |halt|立即停止系统,需要人工关闭电源,是reboot的链接文件| |init 0|切换运行及级别到0, 0表示关机,因此此命令的作用就是关机| |poweroff| 立即停止系统,并且关闭电源| |重启命令|| |reboot|立即重启| |shutdown -r now|立即重启| |shutdown -r +1|1分钟后重启| |init 6|切换运行级别到6,6表示重启,因此此命令的作用就是重启| |注销命令|| |logout|注销退出当前用户窗口| |exit|注销退出当前用户窗口,快捷键Ctrl + d|
