Unix平台下的常用命令技巧之四 关机与重启<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
LastVersion:2003-03-04
简述
在配置系统内核、存在硬件问题、系统处于无法返回的挂起状态、系统性能严重不足、停电、服务器搬移等情况下,需要对服务器关机掉电或重新启动。在安装一些系统级补丁时需要引导到单用户模式。
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
李守亮 slli@founder.com.cn
2003-03-04