ubuntu 运行级别initlevel

Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作。
Ubuntu 的系统运行级别:
0        系统停机状态
1        单用户或系统维护状态
2~5 多用户状态
6        重新启动 
查看当前运行级别
runlevel
runlevel 显示上次的运行级别和当前的运行级别,"N"表示没有上次的运行级别

切换运行级别: 
int [0123456Ss]
即在 init 命令后跟一个参数,此参数是要切换到的运行级的运行级代号,如:用 init 0 命令关机;用 init 6 命令重新启动。


Linux 系统主要启动步骤:
   1. 读取 MBR 的信息,启动 Boot Manager
             Windows 使用 NTLDR 作为 Boot Manager,如果您的系统中安装多个版本的 Windows,您就需要在 NTLDR 中选择您要进入的系统。
             Linux 通常使用功能强大,配置灵活的 GRUB 作为 Boot Manager。
   2. 加载系统内核,启动 init 进程
             init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
   3. init 进程读取/etc/inittab文件中的信息,并进入预设的运行级别,
      按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启动,并指向一个系统中的程序。
             通常情况下, /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录。
             例如您设定的运行级别为 3,那么它对应的启动目录为 /etc/rc3.d/
   4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg
             Xwindow 为 Linux 下的图形用户界面系统。
   5. 启动登录管理器,等待用户登录
             Ubuntu 系统默认使用 gdm 作为登录管理器,您在登录管理器界面中
             输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/文件夹中找到一个名为 S13gdm 的链接) 

 

 

安装sysv-rc-conf
sudo apt-get install sysv-rc-conf

使用sysv-rc-conf
sudo sysv-rc-conf

操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,"X"表示开启该服务。 

用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。                         

如上图所示,第2列打X的项与/etc/rc2.d目录下的软连接文件完全一致,S列下选中的项与/etc/rcS.d目录下的软连接文件也完全一致

 

/etc/rc0.d目录下是系统关机时,执行的脚本(停止服务,卸载一些设备)

 

 

 

=======================

参考: http://no001.blog.51cto.com/1142339/411951/

rc.d的内容如下: 
init.d/ :
各种服务器和程序的二进制文件存放目录。 
rcx.d/:
各个启动级别的执行程序连接目录。里头的东西都是指向init.d/的一些软连接。具体的后边叙述。 
还有三个脚本:rc.sysinit, rc, rc.local 

redhat
的启动方式和执行次序是: 
加载内核 
执行init程序 
/etc/rc.d/rc.sysinit #
init执行的第一个脚本 
/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL
为缺省的运行模式 
/etc/rc.d/rc.local 
/sbin/mingetty #
等待用户登录 

Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括: 
调入keymap以及系统字体 
启动swapping 
设置主机名 
设置NIS域名 
检查(fsck)并mount文件系统 
打开quota 
装载声卡模块 
设置系统时钟 
等等。 


/etc/rc.d/rc
则根据其参数指定的运行模式(运行级别,你在inittab文件中可以设置)来执行相应目录下的脚本。

凡是以Kxx开头的 ,都以stop为参数来调用;凡是以Sxx开头的,都以start为参数来调用。调用的顺序按xx 从小到大来执行。

例如,假设缺省的运行模式是3/etc/rc.d/rc就会按上述方式调用 

/etc/rc.d/rc3.d/下的脚本。 
值得一提的是,Redhat中的运行模式235都把/etc/rc.d/rc.local做为初始化脚本中的最后一个,

所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。 


init在等待/etc/rc.d/rc执行完毕之后(因为在/etc/inittab/etc/rc.d/rc action是wait),
将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登录。 
至此,LINUX
的启动结束

   

使用者自订开机启动程序 (/etc/rc.d/rc.local)
在完成 run level 3 的服务启动后,如果我还有其他的动作想要完成时,

举例来说,我还想要寄一封 mail 给某个系统管理帐号,通知他,系统刚刚重新开机完毕,那么,是否应该要制作一个 shell script 放置在 /etc/rc.d/init.d/ 里面,然后再以连结方式连结到 /etc/rc.d/rc3.d/ 里面呢?

呵呵!当然不需要!还记得上一小节提到的 /etc/rc.d/rc.local 吧?

这个档案就可以执行您自己想要执行的系统指令了。像不像早期 DOS 年代的 autoexec.bat config.sys 呢? ^_^
也就是说,我有任何想要在开机时就进行的工作时,直接将他写入 /etc/rc.d/rc.local 那么该工作就会在开机的时候自动被载入喔!而不必等我们登入系统去启动呢!是否很方便啊!

一般来说,鸟哥就很喜欢把自己制作的 shell script 完整档名写入 /etc/rc.d/rc.local ,如此一来,开机就会将我的 shell script 执行过,真是好棒那!

posted @ 2015-07-29 21:22  asnjudy  阅读(3918)  评论(0编辑  收藏  举报