linux关机和重启命令
说到关机和重启,很多人认为,重要的服务器(比如银行的服务器、电信的服务器)如果重启了,则会造成大范围的灾难。这里解释一下。
首先,就算是银行或电信的服务器,也不是不需要维护,而是依靠备份服务器来代替。其次,每个人的经验都是和自己的技术成长环境息息相关的。比如你是游戏运维出身, 而游戏又是数据为王,所以一切操作的目的就是保证数据的可靠和安全。这时,有计划的重启远比意外宕机造成的损失要小得多,所以定时重启是游戏运维的重要手段。既然是按照自己的技术出身来给出建议,那么难免有局限性,所以强调一下,这些只是“建议”,如果你有自己的经验,则完全可以按照自己的经验来维护服务器。
sync 命令
sync
命令,把内存中的数据强制向硬盘中保存。
英文原意:flush file system buffers
当我们在计算机上保存数据的时候,其实是先在内存中保存一定时间,再写入硬盘。这其实是一种缓存机制,当在内存中保存的数据需要被读取的时候,从内存中读取要比从硬盘中读取快得多。不过这也会带来一些问题,如果数据还没有来得及保存到硬盘中,就发生了突然宕机(比如断电)的情况,数据就会丢失。
sync 命令的作用就是把内存中的数据强制向硬盘中保存。这个命令在常规关机的命令中其实会自动执行,但如果不放心,则应该在关机或重启之前手工执行几次,避免数据丢失。
sync
命令直接执行就可以了,不需要任何选项。
[root@localhost ~]# sync
记得在关机或重启之前多执行几次 sync
命令,多一重保险总是好的。
shutdown 命令
shutdown
命令,用于安全地关闭或重启 Linux 系统。
英文原意:Halt, power-off or reboot the machine
在早期的 Linux 系统中,应该尽量使用 shutdown
命令来进行关机和重启。因为在那时的 Linux 中,只有 shutdown
命令在关机或重启之前会正确地中止进程及服务,所以我们一直认为 shutdown
才是最安全的关机与重启命令。而在现在的系统中,一些其他的命令(如 reboot
)也会正确地中止进程及服务,但我们仍建议使用 shutdown
命令来进行关机和重启。
命令格式如下:
[root@localhost ~]# shutdown [选项] 时间 [警告信息]
选项:
-c:取消已经执行的 shutdown 命令
-h:关机
-r:重启
- 重启与定时重启
先来看看如何使用 shutdown
命令进行重启。
[root@localhost ~]# shutdown -r now
#重启,now 是现在重启的意思
[root@localhost ~]# shutdown -r 05:30
#指定时间重启,但会占用前台终端
[root@localhost ~]# shutdown -r 05:30 &
#把定时重启命令放入后台,& 是后台的意思
[root@localhost ~]# shutdown -c
#取消定时重启
[root@localhost ~]# shutdown -r +10
#10分钟之后重启
- 关机和定时关机
[root@localhost ~]# shutdown -h now
#现在关机
[root@localhost ~]# shutdown -h 05:30
#指定时间关机
reboot 命令
reboot
命令,重启 Linux 系统。在现在的系统中,reboot
命令也是安全的,而且不需要加入过多的选项。
英文原意:Halt, power-off or reboot the machine
[root@localhost ~]# reboot
#重启
halt 和 poweroff 命令
这两个都是关机命令,直接执行即可。
英文原意:Halt, power-off or reboot the machine
[root@localhost ~]# halt
#关机
[root@localhost ~]# poweroff
#关机
init 命令
init
是修改 Linux 运行级别的命令,也可以用于关机和重启。
英文原意:systemd system and service manager
命令格式如下:
[root@localhost ~]# init 数字[0-6]
数字:
0:停机(千万不能把 initdefault 设置为 0 )
1:单用户模式
2:多用户,没有 NFS 不联网
3:完全多用户模式(标准的运行级)
4:保留,暂时没有用到
5:X11(xwindow) 图形化界面模式
6:重新启动 (千万不要把 initdefault 设置为 6 )
关机和重启命令用 init 0
和 init 6
[root@localhost ~]# init 0
#关机,也就是调用系统的 0 级别
[root@localhost ~]# init 6
#重启,也就是调用系统的 6 级别
补充
开机默认模式设置方式:
[root@localhost ~]# vim /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#
##查看 /etc/inittab 文件内容,
[root@localhost ~]# systemctl get-default
multi-user.target
#命令 systemctl set-default 获取默认 init 级别
#根据/etc/inittab的内容得知,multi-user.target: analogous to runlevel 3
#默认级别为 3 ,就是完全多用户模式(标准的运行级)