Linux关机和重启shutdown、reboot命令
曾经有一个很有意思的段子,说一个程序员在自己的简历上写到:"熟练掌握 Linux 的开关机和重启",开机操作任何系统都不难,硬件肯定要给予一个开机的按钮,至于 Linux 的关机和重启,在没有桌面环境的 Linux 下还真需要记住命令才能实现。当然,真正的 Linux 服务器环境,几乎可以做到全年不关机不重启,除非机房断电了,一般情况下,Linux服务器遇上问题,通过重启相关服务进程或执行相关命令回收资源就可以恢复运行,关机、重启对 Linux 操作系统来说是比较暴力的方式,不够优雅,我学习关机和重启命令只为在自己的Linux开发电脑上使用,真正的生产环境服务器,关机和重启操作有专门的运维工程师负责。
sync 命令
sync 命令用于及时将系统内存的数据写到磁盘,在执行关机和重启操作前,都建议手动先执行一次 sync 命令,主要原因在于,程序执行的时候,cpu的运算速度远超磁盘io的速度,因此很多数据是先缓存到内存,之后再写入磁盘,手动执行 sync 命令可以防止数据丢失。
命令路径: /bin/sync,所有用户都有执行 sync 命令的权限。
shutdown 命令
在 Linux 系统中, shutdown 命令既可以用来操作关机也可以用来操作重启,比较常用 shutdown 命令来执行关机操作,重启一般大家更喜欢用简单的 reboot 命令。
除了最基本的关机和重启功能,shutdown 命令还具备如下的功能:
关机前,可以设置关机消息传送给在线的用户,防止多用户在线影响到其他用户;
对在线的用户发送警告,并禁止其他用户登录,但是实际不是真的关机,只是为了避免多用户干扰;
命令概况
shutdown 命令的格式: shutdown [选项] [时间] [警告信息];
命令路径:/sbin/shutdown ,这个命令需要 root 权限才能执行;
常用的选项: -h 关机后不重新启动
-r 关机后立即重新启动
-k 并不真正关机而只是发出警告信息给所有用户
-f 快速关机重启动时跳过fsck
-n 快速关机不经过 init 程序
-c 取消一个已经运行的shutdown
示例
shutdown 缺省选项,默认会等待一分钟后关机,并且向在线用户广播警告信息,如下所示: [root@localhost ~]# shutdown
# 提示将在一分钟后的这个时间执行关机,可以使用shutdown -c取消
Shutdown scheduled for Fri 2019-09-06 14:29:38 CST, use 'shutdown -c' to cancel.
#另外一个在线用户将可以接受到广播消息
[calmsnow@localhost ~]$
# 来自root的广播消息,系统将在一分钟后关闭
Broadcast message from root@localhost.localdomain (Fri 2019-09-06 14:28:38 CST):
The system is going down for power-off at Fri 2019-09-06 14:29:38 CST!
shutdown -h 3 3分钟后关机,并且向在线用户广播警告信息。-h 后写整数,代表过多少分钟后关机,如下所示: [root@localhost ~]# shutdown -h 3
Shutdown scheduled for Fri 2019-09-06 14:41:24 CST, use 'shutdown -c' to cancel.
#另外一个在线用户将可以接受到广播消息
[calmsnow@localhost ~]$
Broadcast message from root@localhost.localdomain (Fri 2019-09-06 14:38:24 CST):
The system is going down for power-off at Fri 2019-09-06 14:41:24 CST!
shutdown -h now 立即关机,不会有任何的广播消息;
halt 和 poweroff 命令也可以实现 shutdown -h now 类似的立即关机效果,但是有说法称 halt 和 poweroff 命令都是不太安全的(所谓不安全就是不能正确的在关闭系统进程的时候将数据保存),因此关机常用的是 shutdown -h now。
shutdown -r 默认会等待一分钟后重启,并且向在线用户广播警告信息,如下所示: [root@localhost ~]# shutdown -r
Shutdown scheduled for Fri 2019-09-06 14:53:26 CST, use 'shutdown -c' to cancel.
#另外一个在线用户将可以接受到广播消息
[calmsnow@localhost ~]$
Broadcast message from root@localhost.localdomain (Fri 2019-09-06 14:52:26 CST):
The system is going down for reboot at Fri 2019-09-06 14:53:26 CST!
shutdown -r 3 3分钟后重启,并且向在线用户广播警告信息。-r 后写整数,代表过多少分钟后重启: [root@localhost ~]# shutdown -r 3
Shutdown scheduled for Fri 2019-09-06 15:00:15 CST, use 'shutdown -c' to cancel.
#另外一个在线用户将可以接受到广播消息
[calmsnow@localhost ~]$
Broadcast message from root@localhost.localdomain (Fri 2019-09-06 14:57:15 CST):
The system is going down for reboot at Fri 2019-09-06 15:00:15 CST!
shutdown -r now 立即重启,不会有任何的广播消息;
重启一般大家更喜欢用简单的 reboot 命令,可以认为 reboot 命令几乎是等价于 shutdown -r now,都是安全的命令。
reboot 命令
reboot 命令可以认为几乎是等价于 shutdown -r now,用于重启 Linux 系统,且也是安全的命令。