Unix平台下的常用命令技巧之四    关机与重启

李守亮

简述

在配置系统内核、存在硬件问题、系统处于无法返回的挂起状态、系统性能严重不足、停电、服务器搬移等情况下,需要对服务器关机掉电或重新启动。在安装一些系统级补丁时需要引导到单用户模式。

Unix启动时,由init根据运行级来启动后面的任务,包括多用户环境,网络等。运行级是操作系统当前正在运行的功能级别。每个级别具有不同的功能。这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc#.d 目录下的文件。

 

 

目录

一、运行控制目录

二、init 的运行级定义

三、几种相关命令介绍

       1、shutdown 命令

       2、halt命令

       3、poweroff命令

       4、reboot 命令

四、推荐几种安全的关机方法

 

 

内容

一、运行控制目录

/etc/rc0.d              用于停止系统的脚本

/etc/rc1.d              用于单用户或维护模式的脚本

/etc/rc2.d              进入多用户模式的脚本

/etc/rc3.d              启动远程文件共享多用户模式的脚本

/etc/rc4.d              进入厂商提供的系统维护模式脚本

/etc/rc5.d              系统没用,可以有用户定义

/etc/rc6.d              重新引导系统脚本

 

运行控制脚本的主要功能是执行用于违背选运行级启动服务的脚本。例如,系统引导时,管理进程读取/etc/inittab文件,该文件告诉系统当前默认的运行级别是3,进程顺序执行/et/rc0、/etc/rc1、/etc/rc2,然后执行完/etc/rc3后结束。如果使系统重新引导到运行级2,则顺序执行/etc/rc6、/etc/rc0、/etc/rc1,执行/etc/rc2后结束。

/etc/inittab中的缺省运行级别可以改变,如果改变后可以使用init Q使管理进程立即重新检查处理/etc/inittab文件。但千万不要把缺省级别设为1、5和6。

 

二、init 的运行级定义

0           关闭操作系统,以便切断电源

1           单用户维护状态

2           正常操作的多用户状态,除NFS server和syslog之外的所有管理进程(daemon)都运行

3           正常操作的多用户状态,系统启动缺省进入此状态

4           多用户状态(现在已经不用)

5           关闭操作系统,以便切断电源,如果系统支持,可以自动切断电源

6           关闭操作系统,重新启动

s或S      单用户状态(有些系统是启动状态)

 

 

# init 0   

系统启动rc0脚本杀掉运行的进程,关闭操作系统到ok状态,此时需要手工干预,是断电关机还是执行boot 重新引导。

 

# init 1

系统杀掉运行进程后启动到单用户模式。需要手工干预

ctrl+d进入3正常启动模式,或输入root口令进入维护模式,执行完操作后使用ctrl+d切换到多用户模式

 

# init 5

系统杀掉运行进程后,关闭操作系统,如果系统支持,自动断电。

 

# init 6

运行脚本杀掉进程,重新启动

 

 

三、几种相关命令介绍

1、shutdown 命令

所有Unix操作系统都有此命令,它可以使系统shutdown, poweroff或reboot。此命令是比较好的关闭操作系统的命令。只有超级用户才有运行权限。运行此命令一般在控制台终端。因为远程执行此命令时,关机消息部显示在远程机器上,控制台终端可以接收关机过程中的所有错误信息,并显示真正处于关闭状态。不得不在远程关机时,使用init 5较好。

Shutdown有以下优点:

1)  命令可以指定时间参数向使用中的用户发消息,提示在参数时间内安全退出;

2)  然后运行0级kill掉任何留下来的进程;

3)  确认挂起时是否对文件系统的更新已经写入,运行sync命令刷新所有验留内存的磁盘块,然后卸载文件系统

4)  最后调用halt命令进入shutdown模式

 

示例:

#shutdown –y –g300 –i0

系统提示所有用户300秒后关机,之后运行0运行级进入到ok状态,手工干预是否断电或boot。如果不希望等可使用shutdown –y g0 –i0或shuhtdown –i0 now

 

#shutdown –y –g0 –i5

如果希望立即关闭操作系统并断电执行shutdown –y –g0 –i5,因为-i0还需要手工断电。

 

另外,在AIX上,从任何运行级别运行shutdown命令,系统自动下电,同时要求手工操作主机上的电源开关或reset键

 

# shutdown           或shutdown +1 –h        或shutdown -g0 -y

重新引导到level: S,使用ctrl+d选择(0~6)运行级别,缺省为3

 

运行级5通常在操作系统停止后,将计算机下电。

 

2、halt命令

halt命令只完成关机进程的一部分职能,他不通报正在登陆的用户,不执行kill操作,而立即进行shutdown,如果使用#halt –q 会立即停止系统,没有同步,没有杀死进程或写入日志,非常危险。

 

3、poweroff 命令

       Poweroff命令不通报正在登陆的用户,不执行kill脚本操作,立即进行shutdown并掉电。如果安全的使用此命令,应和同步命令sync联合使用。刷新所有验留内存的磁盘块,然后下电。

示例:

       #sync;sync;poweroff

 

4、reboot命令

reboot命令立即执行shutdown并使系统重新引导为 level 3模式,与 init 6的区别是不运行rc0 kill脚本,不通报logged用户。安全使用应与同步命令一起使用。

示例:

    #sync;sync;reboot

 

四、推荐几种安全的关机方法

1、  在控制台终端使用,立即关闭操作系统并断电

#shutdown –y –i5 –g0

其中-g0的参数可根据是否提示在线用户退出给定,单位为秒,等效的命令为:

#shutdown –y –i5 now

使用shutdown的好处参见上文。

 

2、  在控制台终端使用,立即关闭操作系统,手工断电或boot

#shutdown –y –i0 –g0

如果有时shudown无法结束,需要运行

#init 0

 

3、远程关机,关闭操作系统并断电

       不得不远程关机时,也可以使用init 5,示例

       # init 5

       据说有时init 5会导致机器挂起,所以在不得不远程关机时,可以选择使用。

 

4、#sync;sync;poeroff

       确认一些重要服务已经停止,如oracle、weblogic等,刷新所有验留内存后(两次执行同步命令sync),进行断电。此命令关机比较快,同步后执行,也比较安全。可以选择使用。

 

5、AIX系统使用shutdown命令,手工断电

 

6、重启动

       配置内核后或其他需要重启动服务器的时候,推荐使用下面命令:

       # init 6

       # sync;sync;reboot

 

 

总之,sun系统比较推荐的关机命令为#shutdown –y –i5 –g0

 

 

 

 

 

 

 

李守亮