深入linux下正确的关机步骤

发布时间:2020-09-27编辑:脚本学堂
本文介绍下,何为linux中正确的关机步骤,在linux中如何关机才是安全的,有需要的朋友,参考下吧。

linux是多任务多用户的环境,在不知道正在运行的程序和工作之前就关闭,未带来许多未知的错误,有时甚至是灾难性的。

linux中正确的关机步骤,我们可以归纳为以下几点,大家可以参考看看。

第一步:查看当前登录的用户,关机前进行通知。
查看当前登录用户,使用who命令:
 

复制代码 代码示例:
root@www.jb200.com:~# who  
root     pts/0        Jun 27 03:22 (210.13.218.86) 

第二步:查看当前网络联机状况和后台程序执行情况,作为关机的参照。

可以用netstat -a 查看网络联机,ps -aux查看后台程序运行情况。
   

复制代码 代码示例:
www.jb200.com:~# netstat -a  
    Active Internet connections (servers and established)  
    Proto Recv-Q Send-Q Local Address           Foreign Address         State  
    tcp        0      0 *:www                   *:*                     LISTEN  
    tcp        0      0 www.jb200.com.serve:www 113.92.179.39:4003      SYN_RECV  
    tcp        0      0 localhost.localdom:smtp *:*                     LISTEN  
    tcp        0      0 *:1020                  *:*                     LISTEN  
    tcp        0      0 *:2021                  *:*                     LISTEN  
    tcp        0      0 localhost.localdo:mysql *:*                     LISTEN  
    tcp        0      0 localhost.lo:submission *:*                     LISTEN  
    tcp        0      0 www.jb200.com.serv:1020 210.13.218.86:59407     ESTABLISHED  
    tcp        0    336 www.jb200.com.serv:1020 210.13.218.86:59498     ESTABLISHED  
    tcp        0      0 www.jb200.com.serve:www 113.92.179.39:3998      ESTABLISHED  
    tcp6       0      0 [::]:1020               [::]:*                  LISTEN  
    udp        0      0 *:openvpn               *:*  
    udp6       0      0 [::]:talk               [::]:*  
    udp6       0      0 [::]:ntalk              [::]:*  
    Active UNIX domain sockets (servers and established)  
    Proto RefCnt Flags       Type       State         I-Node   Path  
    unix  2      [ ACC ]     STREAM     LISTENING     108060083 /var/run/nscd/socket  
    unix  2      [ ACC ]     STREAM     LISTENING     108060261 /var/run/sendmail/mta/smcontrol  
    unix  2      [ ACC ]     STREAM     LISTENING     223628761 /var/run/mysqld/mysqld.sock  
    unix  6      [ ]         DGRAM                    108059616 /dev/log  
    unix  2      [ ]         DGRAM                    1587855193  
    unix  2      [ ]         DGRAM                    223628759  
    unix  2      [ ]         DGRAM                    108060212  
    unix  2      [ ]         DGRAM                    108060063  
    www.jb200.com:~# ps -aux  
    Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html  
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND  
    root         1  0.0  0.0   1984   100 ?        Ss   Apr26   0:00 init [2]  
    root      1386  0.0  0.0   1696   368 ?        Ss   Apr26   0:00 /sbin/syslogd  
    root      1400  0.0  0.0   4176   340 ?        Ss   Apr26   0:00 /usr/sbin/openv  
    root      1406  0.0  0.0   5276   336 ?        Ss   Apr26   0:00 /usr/sbin/sshd  
    root      1530  0.0  0.1 108576   584 ?        Ssl  Apr26   0:05 /usr/sbin/nscd  
    root      1544  0.0  0.0   3652   264 ?        S    Apr26   0:00 /usr/sbin/vsftp  
    root      1552  0.0  0.0   2916    28 ?        Ss   Apr26   0:00 /usr/sbin/xinet  
    root      1594  0.0  0.0   8848   480 ?        Ss   Apr26   0:02 sendmail: MTA:  
    root      1620  0.0  0.0   2040   228 ?        Ss   Apr26   0:00 /usr/sbin/cron  
    root      9426  0.0  1.9  28932 10000 ?        Ss   Jun19   0:00 /usr/sbin/apach  
    root     11643  0.0  0.0   2480   512 ?        S    May03   0:00 /bin/sh /usr/bi  
    mysql    11680  0.1 12.2 180380 64088 ?        Sl   May03  83:06 /usr/sbin/mysql  
    root     11681  0.0  0.0   1632    40 ?        S    May03   0:00 logger -p daemo  
    www-data 28266  0.0  1.8  29420  9756 ?        S    07:17   0:00 /usr/sbin/apach  
    www-data 28268  0.0  1.9  29928 10116 ?        S    07:19   0:00 /usr/sbin/apach  
    www-data 28293  0.0  1.7  29396  9404 ?        S    07:21   0:00 /usr/sbin/apach  
    www-data 28296  0.0  1.8  29652  9628 ?        S    07:23   0:00 /usr/sbin/apach  
    www-data 28299  0.0  1.3  29416  6820 ?        S    07:26   0:00 /usr/sbin/apach  
    root     28303  0.0  0.5   8232  2648 ?        Ss   07:27   0:00 sshd: root@nott  
    root     28305  0.0  0.2   5004  1316 ?        Ss   07:28   0:00 /usr/lib/openss  
    root     28306  0.0  0.5   8444  2660 ?        Ss   07:28   0:00 sshd: root@pts/  
    root     28308  0.0  0.2   2816  1428 pts/0    Ss   07:28   0:00 -bash  
    root     28313  0.0  0.1   2300   788 pts/0    R+   07:28   0:00 ps -aux  
    www.jb200.com:~#  

第三步:数据同步写入硬盘sync

sync是一个把当前内存中未来得及写入硬盘的数据写入硬盘。这是一个很好的命令,随时都可以执行,不过root用户执行的效果是保存所有用户的数据到硬盘,而普通用户执行的效果是只保存自己的数据。

不过由于当前的主流linux系统均具有shutdown等关机命令前主动调用sync命令保存用户数据,所以sync可以省略的,不过为了系统安全,执行一下也不是什么坏事。

第四步:运行关机命令
关机的命令比较多,每个命令有自己不同的用法。

关机命令一:shutdown
语  法:shutdown [-acefFhknr][-t 秒数][时间][警告信息]
参  数:
 -c  取消关机命令
 -f  重新启动时不执行fsck。
 -F  重新启动时执行fsck。
 -h  将系统关机。
 -k  只是送出信息给所有用户,但不会实际关机。
 -n  不调用init程序进行关机,而由shutdown自己进行。
 -r  shutdown之后重新启动。
 -t<秒数>  送出警告信息和删除信息之间要延迟多少秒。
 [时间]  设置多久时间后执行shutdown指令。
 [警告信息]  要传送给所有登入用户的信息。
例子:
 

复制代码 代码示例:
shutdown -h now     //同shutdown -h 0,立即关机
shutdown -h 20:00   //在20:00关机,若在20:00以后执行命令则下一个24小时的20:00关机
shutdown -h +10      //10分钟后关机   可以用shutdown -c取消
shutdown -r now      //同shutdown -r 0,立即重启
shutdown -r +30 "The system will reboot after 30 minutes"   //30分钟厚重启并提示所有在线用户
shutdown -k now "The system will shutdown"   //仅仅发出提示而不关机

第二个关机命令:halt
halt跟shutdown的不同是halt不理会各项服务,直接执行硬件关机,而shutdown会逐项关闭服务,然后再执行halt!
所以halt是一个不安全的关机命令,可以忽略。

第三个关机命令:poweroff
poweroff在很多系统中,是halt的一个软链接,不是一个安全的关机命令。

第四个关机命令:init 0
init是设置用户运行级别的命令,因此init 0 会先关闭运行的服务,用户进程和守护进程,最终关机。
此命令是非常安全的关机命令。

就介绍吧,千万记住了,在linux系统中如何正确的关机,非常重要哦。