曾经有一个很有意思的段子,说一个程序员在自己的简历上写到:"熟练掌握 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 -09-06 14:29:38 CST, use 'shutdown -c' to cancel.#另外一个在线用户将可以接受到广播消息[calmsnow@localhost ~]$# 来自root的广播消息,系统将在一分钟后关闭Broadcast message from root@localhost.localdomain (Fri -09-06 14:28:38 CST):The system is going down for power-off at Fri -09-06 14:29:38 CST!
shutdown -h 3
3分钟后关机,并且向在线用户广播警告信息。-h
后写整数,代表过多少分钟后关机,如下所示:
[root@localhost ~]# shutdown -h 3Shutdown scheduled for Fri -09-06 14:41:24 CST, use 'shutdown -c' to cancel.#另外一个在线用户将可以接受到广播消息[calmsnow@localhost ~]$Broadcast message from root@localhost.localdomain (Fri -09-06 14:38:24 CST):The system is going down for power-off at Fri -09-06 14:41:24 CST!
shutdown -h now
立即关机,不会有任何的广播消息;
halt
和poweroff
命令也可以实现shutdown -h now
类似的立即关机效果,但是有说法称halt
和poweroff
命令都是不太安全的(所谓不安全就是不能正确的在关闭系统进程的时候将数据保存),因此关机常用的是shutdown -h now
。
shutdown -r
默认会等待一分钟后重启,并且向在线用户广播警告信息,如下所示:
[root@localhost ~]# shutdown -rShutdown scheduled for Fri -09-06 14:53:26 CST, use 'shutdown -c' to cancel.#另外一个在线用户将可以接受到广播消息[calmsnow@localhost ~]$Broadcast message from root@localhost.localdomain (Fri -09-06 14:52:26 CST):The system is going down for reboot at Fri -09-06 14:53:26 CST!
shutdown -r 3
3分钟后重启,并且向在线用户广播警告信息。-r
后写整数,代表过多少分钟后重启:
[root@localhost ~]# shutdown -r 3Shutdown scheduled for Fri -09-06 15:00:15 CST, use 'shutdown -c' to cancel.#另外一个在线用户将可以接受到广播消息[calmsnow@localhost ~]$Broadcast message from root@localhost.localdomain (Fri -09-06 14:57:15 CST):The system is going down for reboot at Fri -09-06 15:00:15 CST!
shutdown -r now
立即重启,不会有任何的广播消息;
重启一般大家更喜欢用简单的reboot
命令,可以认为reboot
命令几乎是等价于shutdown -r now
,都是安全的命令
reboot
命令
reboot
命令可以认为几乎是等价于shutdown -r now
,用于重启 Linux 系统,且也是安全的命令。