init runlevel 与 机器启动相关

稍微做点总结和笔记,基本来自于google和《linux administion book》.

什么是 runlevel
"Runlevel" defines the state of the machine after boot.

运行级别 runlevel
机器引导时,init从运行级别0开始,一级一级往上运行到/etc/inittab中设置的默认运行级别,当机器关闭时,以相反的顺序执行同样的操作。
Linux系统还实现了另外一层抽象,采用“改变运行级别”脚本的形式(/etc/rc.d/inint.d/rc),有inittab调用。这一脚本接下来执行位于与执行级别有关的目录下的其他脚本,把系统带入新的级别。在每个运行级别上,init都把新运行级别当作参数来调用/etc/rc.d/rc。
/etc/rc.d/里都是指向init.d里的脚本的链接。/etc/rc.d/init.d里是操纵各种服务的脚本。/etc/rc.d/里面的链接决定了某个run level需要执行的脚本,包括需要启动的和停止的服务的列表。真正的可执行程序在init.d里。
在 /etc/rc.d 下会有这些文件夹
init.d rc rc[0-6].d rc.local rc.sysinit
在/etc下会有他们的符号链接
/etc/init.d     -> /etc/rc.d/init.d  # 真正的执行脚本
/etc/rc         -> /etc/rc.d/rc  
/etc/rc[0-6].d  -> /etc/rc.d/rc[0-6].d
/etc/rc.local   -> /etc/rc.d/rc.local  
/etc/rc.sysinit -> /etc/rc.d/rc.sysinit

关于开机启动:(我的理解)
机器有0-6的runlevel. 0是关机. 通常5是图像界面,开机这个动作就是从level0->level5.
在/etc/init.d(指向/etc/rc.d/init.d)里有服务启动的脚本,这些脚本通常接受start stop restart指令.
/etc/rc[0-6].d(指向/etc/rc.d/rc[0-6].d)表明在进入某个级别时要执行的动作。
很多资料一直强调rc开机关机重启,我认为关键在于runlevel切换的问题.l0是关机,l3是字符,l5是图形,l6是重启.关机的含义是:我从当前的runlevel跳到runlevel0.跳到runlevel0时,需要执行/etc/rc0.d中的脚本,看看/etc/rc0.d里基本都是KxxXXX的脚本,还有两个S01halt,S00killall脚本,表明在Kill了其他服务后,先执行killall服务,再执行halt服务。killall(停止所有无用服务) halt(kill了所有进程,umount所有fs,然后关机或者reboot)。
当然,关机开机除了运行级别管理的服务,还有其他需求,因此init 0(init 6)不是好的关机(重启)方法.

改变运行级别:
init 3
telinit 3

查看运行级别
runlevel
who -a

开机顺序
加载 BIOS 的硬件信息;
读取 MBR 的 Kernel Loader (lilo, grub等)开机信息;
加载 Kernel 的操作系统核心信息;
Kernel 执行 init 程序并取得 run-level 信息;
init 执行 /etc/rc.d/rc.sysinit 档案,将基本的系统设定数据都写好
启动模块 (/etc/modules.conf);  
init 执行 runlevel 的各个脚本;
init 执行 /etc/rc.d/rc.local 档案;
执行 /bin/login 程序;
登入之后启动shell。
即:
BIOS
MBR
Linux Loader
kernel, init ( 取得 run-level ),
/etc/rc.d/rc.sysinit
/etc/modules.conf,
/etc/rc.d/rc[0-6].d,
/etc/rc.d/rc.local
/bin/login
/bin/bash
 
开机重启命令及区别
Shutdown:
    init 0
    shutdown -h now
        -a: Use file /etc/shutdown.allow
        -c: Cancel scheduled shutdown.
    halt -p
        -p: Turn power off after shutdown.
    poweroff
Reboot:
    init 6
    shutdown -r now
    reboot
Enter single user mode:
    init 1
shutdown 是停止系统或重新引导系统,或返回单用户模式的最安全、考虑最周到、最彻底的方式。使用shutdown命令会通知所有登录的用户系统将要关闭。并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的﹐还可能重启。这是由所有进程(process)都会收到系统所送达的信号(signal)决定的。这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件(mail)和新闻(news)的程序则可以正常地离开等等。shutdown -h的工作是通知当前登录的用户,结束login,杀掉所有进程,再送信号给init﹐要求它改变runlevel。0用来停机,6是用来重新激活系统﹐1则是被用来让系统进入管理工作可以进行的状态。
halt就是调用shutdown -h。halt执行时﹐终止非必须的进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。halt -n不执行sync。
reboot和halt几乎完全一样,只不过它是让机器重现启动。


系统启动服务管理工具有:
ntsysv, service, chkconfig, init, update-rc.d
1.
update-rc.d是Ubuntu/Debian的管理工具。
2.
chkconfig 检查,设置系统的各种服务。
3.
netsysv 管理runlevel
ntsysv       <== 设置当前所在 run-level
ntsysv --level 5   <== 设置 run-level 5 的属性
ps.
chkconfig 和 netsysv 的设置会在启动再更新服务。
4.
service 只是一个脚本,从 /etc/init.d 中获取脚本执行。
如:
service snmpd start
等价于 /etc/init.d/snmpd start
5.
setup 其实也就是管理系统配置文件
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值