当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 对shutdown,halt,reboot,init的一点理解

Unix/Linux
如何在linux下面运行招商银行专业版
Windows和Linux系统共存 完美解决方案
Linux 和对称多处理应用程序介绍
Red Hat Linux 附加引导和内核引导选项
Linux 2.6.11内核文件IO系统调用详解
走向高手之路 Linux系统内核技术解读
菜鸟乐园 Linux系统内核代码特色一览
Linux内核和传统Unix内核的比较
内核中的物理内存分配函数kernel api
使用 Linux 系统调用的内核命令
详细解析 Linux内核的主要配置选项
内核操作 Linux2.6内核驱动移植参考
Linux内存中Swap和Buffer Cache机制
高手进阶 更换Fedora Core 6的内核
高手风范 Linux操作系统内核编码风格
Linux操作系统内核中工作队列的操作
揭开Linux系统内核调试器的神秘面纱
系统“大挪移” Linux服务器迁移大法
高手进阶 重新编译Linux操作系统的内核
Ubuntu系统关于驱动模块命令的一些使用

Unix/Linux 中的 对shutdown,halt,reboot,init的一点理解


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 216 ::
收藏到网摘: n/a


shutdown,halt,reboot,其实都是发送信号给init程序﹐通过改变runlevel来实现所用的参数。。 Runlevel 0被用来停机〔halt),halt就是调用shutdown -hrunlevel 6是用来重新激活〔reboot〕系统而runlevel 1则是被用来让系统进入管理工作可以进行的状态init定义了8个运行级别(runlevel),init 0为关机﹐init 1为重启。
linux进程在存盘之前,对数据进行swap, 等到系统空闲的时候再将数据写入硬盘. 这就是为什么linux下在系统空闲的时候回狂写硬盘. 问题就出在这儿了, 当系统掉电时, 系统来不及把swap分区中的数据同步到硬盘, 所以导致系统的完整性受到破坏.

1、shutdown参数:
   [-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。    [-r] 重启计算器。    [-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。    [-h] 关机后关闭电源〔halt〕。    [-n] 不用init﹐而是自己来关机。不鼓励使用这个选项﹐而且该选项所产生的后果往往不总是你所预期得到的。    [-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数﹐但是可以输入一个用来解释的讯息﹐而这信息将会送到每位使用者。    [-f] 在重启计算器〔reboot〕时忽略fsck。    [-F] 在重启计算器〔reboot〕时强迫fsck。    [-time] 设定关机〔shutdown〕前的时间。       2.halt   其实halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。    参数说明:    [-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。    [-w] 并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。    [-d] 不写wtmp纪录〔已包含在选项[-n]中〕。    [-f] 没有调用shutdown而强制关机或重启。    [-i] 关机〔或重启〕前﹐关掉所有的网络接口。    [-p] 该选项为缺省选项。就是关机时调用poweroff。    3.reboot reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而halt是关机。它的参数与halt相差不多。

4.init init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的用户进程﹑守护进程等。shutdown 就是使用这种机制。init定义了8个运行级别(runlevel),init 0为关机﹐init 1为重启。
另外还有telinit命令可以改变init的运行级别﹐比如﹐telinit -iS可使系统进入单用户模式﹐ 并且得不到使用shutdown时的信息和等待时间。