在linux下有很多关机的命令,在实际应用中它们还是有一点区别的,对系统也可能产生不同的影响,接下来主要是将下它们的具体用法和不同。
linux下一些比较常用的重启和关机命令有: shutdown 、halt、poweroff、init、reboot
- shutdown命令(需要root权限,普通用户可以通过sudo来获得权限)
在这几个命令当中推荐使用shutdown命令,可以通过添加参数实现系统的关机和重启。
shutdown执行关机,是送信号给init,要求它改变运行级别,以此来关机。关机或重启实际上是运行级别的调整,所以也可以用init直接调整运行级别来进行关机或重启。
使用shutdown命令关机是安全的:
linux系统是一个多用户的操作系统,并且后台也会运行多个进程。用户采用直接关闭电源的方式进行强制关机,是十分危险的,它可能会造成系统数据丢失,甚至损坏硬件设备。
而在使用shutdown命令添加时间参数时,会通知每个已登录的用户系统将要关机,可以适当的给用户保存当前工作的时间,从而避免进程突然强制关闭可能造成的危险。
shutdown工作过程,系统管理员执行shutdown命令后,会发送信号给init,请求其改变运行级别runlevel。
runlevel 0 被用来停机〔halt〕
runlevel 6 是用来重新激活〔reboot〕系统
对于详细的runlevel问题,可以查看/etc/inittab文件,下边也会列出来。
shutdown 参数说明:
-t 在改变到其它runlevel之前,告诉init多久以后关机。
-r 重启计算器。
-k 并不真正关机,只是送警告信号给每位登录者〔login〕。
-h 关机后关闭电源〔halt〕。
-n 不用init而是自己来关机。不鼓励使用这个选项,而且该选项所产生的后果往往不总是你所预期得到的。
-c cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。
shutdown -r 2/now 2分钟后或者立刻重启系统
shutdown -h 2/now 2分钟后或者立刻关闭系统
示例:系统管理员执行shutdown -h 2 ,2分钟后关机,系统会通知登录用户asd即将关机如下
现在管理员又想取消关机,可以使用-c参数,并说明取消的原因
用户asd收到关机取消的信息
2.halt
halt命令相当与shutdown -h now立刻关机,不通知任何用户。
参数:
-n 在关机前不做将记忆体资料写回硬盘的动作
-w 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-d 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) -f : 强迫关机,不呼叫 shutdown 这个指令
-i 在关机之前先把所有网络相关的装置先停止
-p 当关机的时候,顺便做关闭电源(poweroff)的动作
3.poweroff
poweroff和halt命令都是reboot的软连接,用法一样
4. init
init是所有进程的祖先,是Linux系统操作中不可缺少的程序之一。它的进程号始终为1。
不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)
0 停机(千万不能把initdefault 设置为0 )
1 单用户模式
2 多用户,没有 NFS
3 完全多用户模式(标准的运行级)
4 没有用到
5 X11 (xwindow)
6 重新启动 (千万不要把initdefault 设置为6 )
shutdown 关机就是请求init切换到runlevel 0.