Linux中常用的关机和重新启动命令有shutdown、halt、reboot以及init,它们都可以达到关机和重新启动的目的,但是每个命令的内部工作过程是不同的,下面将逐一进行介绍。
一、shutdown
shutdown命令用于安全关闭Linux系统。有些用户会使用直接断掉电源的方式来关闭Linux,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至会损坏硬件设备。
执行shutdown命令时,系统会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录系统。使用shutdown命令可以直接关闭系统,也可以延迟指定的时间再关闭系统,还可以重新启动。延迟指定的时间再关闭系统,可以让用户有时间储存当前正在处理的文件和关闭已经打开的程序。
shutdown命令的部分参数如下:
[-t] 指定在多长时间之后关闭系统
[-r] 重启系统
[-k] 并不真正关机,只是给每个登录用户发送警告信号
[-h] 关闭系统(halt)
shutdown命令的工作实质是给init程序发送信号(signal),要求其切换系统的运行级别(Runlevel)。系统的运行级别包括:
0:关闭系统
1:单用户模式,如果没有为shutdown命令指定-h或-r参数而直接执行,则默认将切换到此运行级别 2:多用户模式(不支持NFS)
3:多用户模式(支持NFS),一般常用此种运行级别
5:多用户模式(GUI模式)
6:重新启动系统
二、halt
halt是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。
halt命令的部分参数如下:
[-f] 没有调用shutdown而强制关机或重启
[-i] 关机或重新启动之前,关掉所有的网络接口
[-p] 关机时调用poweroff,此选项为缺省选项
三、reboot
reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。
四、init
init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动
本贴来自ZDNetChina中文社区 http://bbs.zdnet.com.cn ,本贴地址:http://bbs.zdnet.com.cn/viewthread.php?tid=94635
简述
在配置系统内核、存在硬件问题、系统处于无法返回的挂起状态、系统性能严重不足、停电、服务器搬移等情况下,需要对服务器关机掉电或重新启动。在安装一些系统级补丁时需要引导到单用户模式。
Unix启动时,由init根据运行级来启动后面的任务,包括多用户环境,网络等。运行级是操作系统当前正在运行的功能级别。每个级别具有不同的功能。这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc#.d 目录下的文件。
目录
一、运行控制目录
二、init 的运行级定义
三、几种相关命令介绍
四、推荐几种安全的关机方法
内容
一、运行控制目录
/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
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)
3)
4)
示例:
#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
重新引导到level: S,使用ctrl+d选择(0~6)运行级别,缺省为3
运行级5通常在操作系统停止后,将计算机下电。
2、halt命令
halt命令只完成关机进程的一部分职能,他不通报正在登陆的用户,不执行kill操作,而立即进行shutdown,如果使用#halt –q 会立即停止系统,没有同步,没有杀死进程或写入日志,非常危险。
3、poweroff 命令
示例:
4、reboot命令
reboot命令立即执行shutdown并使系统重新引导为 level 3模式,与 init 6的区别是不运行rc0 kill脚本,不通报logged用户。安全使用应与同步命令一起使用。
示例:
四、推荐几种安全的关机方法
1、
#shutdown –y –i5 –g0
其中-g0的参数可根据是否提示在线用户退出给定,单位为秒,等效的命令为:
#shutdown –y –i5 now
使用shutdown的好处参见上文。
2、
#shutdown –y –i0 –g0
如果有时shudown无法结束,需要运行
#init 0
3、远程关机,关闭操作系统并断电
4、#sync;sync;poeroff
5、AIX系统使用shutdown命令,手工断电
6、重启动
或
总之,sun系统比较推荐的关机命令为#shutdown –y –i5 –g0