linux下常用的关机命令有:shutdown、halt、poweroff、init;重启命令有:reboot。下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法
常用的命令:
halt 立即关机,poweroff 立即关机, shutdow -h now 立即关机(root用户使用)
shutdown -h 10 10分钟后自动关机.
命令详解:
- halt命令:
其实halt命令就是调用shutdown -h ,halt在执行的时候,杀死应用进程.,执行sync系统调用,文件系统写操作完成后就会停止内核工作.
参数:
[-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。
[-w] 并不是真正的重启或关机﹐只是把记录写到./var/log/wtmp文件中.
-d: 不把记录写到/var/log/wtmp文件中(-n 这个参数包含了,-d)
-f:强迫关机,不呼叫shutdown这个指令.
-i : 在关机之前先把所有网络相关的装置先停止
-p : 当关机的时候,顺便做关闭电源(poweroff)的动作
shutdown命令:
shutdown命令安全的将系统进行关机,有些用户会使用直接断电的方式来关闭Linux,这是十分危险的.因为linux在其后台运行着许多的进程,所以强制关机可能会导致进程数据额定丢失,使得系统处于不稳定的状态,甚至在有的系统中会损坏设备,而在关机前使用shutdown命令,系统管理员,会通知所有登录的用户系统将关闭,并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的﹐还可能重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕
shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。
Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系统﹐而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。
常用参数:
-t 在改变到其他runlevel之前,告诉内核多久会关机
-r重启电脑
-k 并不是真正的关机,只是送警告信号给登录者
-h 关机后关闭电源
-n 不用init.而是自己来进行关机,不建议使用
-c取消目前正在执行的关机程序
-f 重启计算器,忽略fsck
-F 在重启时强迫fsck
-tine 设定关机前时间
reboot命令:
reboot的工作过程差不多跟halt一样,不过它是引发主机进行重启,而halt是关机,参数也差不多.
init 0 :
在Linux系统启动过程中,init进程是所有进程的父进程,他的进程id号为1, 所以发送TERM信号给init会终止所有的 用户进程﹑守护进程等。shutdown 就是使用这种机制。init定义了8个运行级别(runlevel),
• 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
• 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
• 运行级别2:多用户状态(没有NFS)
• 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
• 运行级别4:系统未使用,保留
• 运行级别5:X11控制台,登陆后进入图形GUI模式
• 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动关于init可以长篇大论﹐这里就不再叙述。所以通过设置为init0 ,系统则进入了关机状态,这也是临时设置,重新开机后,系统的运行级别不会发生改变.
另外还有telinit命令可以改变init的运行级别﹐比如﹐telinit -iS可使系统进入单用户模式﹐ 并且得不到使用shutdown时的信息和等待时间。
poweroff:
该命令只要是用来关机计算机并切断电源,使用权限: 系统管理员.
常用参数:
-n : 在关机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 文件里
-i : 在关机之前先把所有网络相关的装置先停止
-p : 关闭操作系统之前将系统中所有的硬件设置为备用模式。