Linux的六大运行级别与自启动服务管理
2013-05-07 20:22
387 查看
linux下/etc/rc[S 0-6]目录下的文件都是/etc/init.d/下面可执行文件或脚本的链接。
如果对ARM有些了解,可能会发现一点:ARM的绝对地址0x00000000处的那几个中断表,其处理方式与Linux对系统的不同状态的处理有点相似之处。比如ARM遇到reset信号之后就会去执行reset中断向量(其实也是一个编号),而linux遇到切换级别的信号(关机,halt,重启等信号),也会去执行/etc/rc[0-6].d/目录下的动作。由此,软硬件设计可以相通相互借鉴。现在简略讲讲linux的运行级别相关知识。
除此之后,一般/etc下可能还有/etc/rc.local,/etc/rc.sysinit文件,一般/etc/rc.local默认并不做什么实事,可能是系统留下的一个接口,供用户添加系统启动时执行的动作,它一般会执行在/etc/init.d/的后面,所以比较靠后。/etc/rc.sysinit在Redhat9.0里做的事比较多,有点类似执行/etc/rcS.d/下面的动作。
系统执行完init之后,会首先执行/etc/rcS/下面的以S[0-9][0-9]init_script为命名的初始化(如果改为以K开头,便不会被执行了),执行顺序以S后面的两位数字的由小到大的顺序;
之后会去找/etc/inittab定义系统运行级别的配置文件,根据initdefault指定的默认运行级别,而执行/etc/rc[0-6].d/下的初始化。
ubuntu则没有采用Linux传统的这种方式,而换了另外一种方法,在执行完/etc/rcS/下面的初始化后,会去/etc/event.d/rc-default里找运行级别,这个脚本首先判断从启动内核的参数命令行中寻找类似single的字串,如果找到,则定义运行级别1,否则再去找/etc/inittab,没有的话,则定义默认级别为2(可能是因为ubuntu主要是面向个人PC的桌面电脑,所以没有开启全功能多用户级别)。
添加一个服务:sudo update-rc.d srv_name defaults 99
删除一个服务 :sudo update-rc.d srv_name remove
临时重启一个服务:/etc/init.d/srv_name restart
临时关闭一个服务:/etc/init.d/srv_name stop
临时启动一个服务:/etc/init.d/srv_name start
当一个用户从(例如)运行级别 2 切换到运行级别 3 的时候,/etc/rd2.d/S[0-9][0-9]init_file_name会首先按字母顺序、然后以“stop”为第一个参数执行运行级别 3 的所有 K 脚本(/etc/rc3.d/K[0-9][0-9]init_script),再以“start”为第一个参数执行运行级别 3 的所有 S 脚本(/etc/rc3.d/S[0-9][0-9]init_script)。
可以通过runlevel命令查看系统当前的运行级别,telinit命令更改运行级别。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/6_system/linux/Linuxjs/20091209/184482.html
如果对ARM有些了解,可能会发现一点:ARM的绝对地址0x00000000处的那几个中断表,其处理方式与Linux对系统的不同状态的处理有点相似之处。比如ARM遇到reset信号之后就会去执行reset中断向量(其实也是一个编号),而linux遇到切换级别的信号(关机,halt,重启等信号),也会去执行/etc/rc[0-6].d/目录下的动作。由此,软硬件设计可以相通相互借鉴。现在简略讲讲linux的运行级别相关知识。
除此之后,一般/etc下可能还有/etc/rc.local,/etc/rc.sysinit文件,一般/etc/rc.local默认并不做什么实事,可能是系统留下的一个接口,供用户添加系统启动时执行的动作,它一般会执行在/etc/init.d/的后面,所以比较靠后。/etc/rc.sysinit在Redhat9.0里做的事比较多,有点类似执行/etc/rcS.d/下面的动作。
系统执行完init之后,会首先执行/etc/rcS/下面的以S[0-9][0-9]init_script为命名的初始化(如果改为以K开头,便不会被执行了),执行顺序以S后面的两位数字的由小到大的顺序;
之后会去找/etc/inittab定义系统运行级别的配置文件,根据initdefault指定的默认运行级别,而执行/etc/rc[0-6].d/下的初始化。
ubuntu则没有采用Linux传统的这种方式,而换了另外一种方法,在执行完/etc/rcS/下面的初始化后,会去/etc/event.d/rc-default里找运行级别,这个脚本首先判断从启动内核的参数命令行中寻找类似single的字串,如果找到,则定义运行级别1,否则再去找/etc/inittab,没有的话,则定义默认级别为2(可能是因为ubuntu主要是面向个人PC的桌面电脑,所以没有开启全功能多用户级别)。
添加一个服务:sudo update-rc.d srv_name defaults 99
删除一个服务 :sudo update-rc.d srv_name remove
临时重启一个服务:/etc/init.d/srv_name restart
临时关闭一个服务:/etc/init.d/srv_name stop
临时启动一个服务:/etc/init.d/srv_name start
当一个用户从(例如)运行级别 2 切换到运行级别 3 的时候,/etc/rd2.d/S[0-9][0-9]init_file_name会首先按字母顺序、然后以“stop”为第一个参数执行运行级别 3 的所有 K 脚本(/etc/rc3.d/K[0-9][0-9]init_script),再以“start”为第一个参数执行运行级别 3 的所有 S 脚本(/etc/rc3.d/S[0-9][0-9]init_script)。
可以通过runlevel命令查看系统当前的运行级别,telinit命令更改运行级别。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/6_system/linux/Linuxjs/20091209/184482.html
相关文章推荐
- 第14章 Linux启动管理(1)_系统运行级别
- Linux-服务管理 之---运行级别
- linux服务的开机启动和运行级别(chkconfig)
- Linux启动管理-运行级别
- linux 下查看服务和与服务的运行级别以及自动启动相关的配置
- 37、linux (centos6.x)启动管理,运行级别与启动过程
- Linux学习日记 —— 15.1.1 Linux启动管理-启动流程-运行级别
- linux服务的开机启动和运行级别
- Linux系统下的启动流程&运行级别&用户管理
- Linux启动关闭和服务管理 - 详述
- linux用户管理,运行级别
- Linux启动顺序、运行级别及开机启动
- Linux下chkconfig命令详解--(启动或停止)和查询系统服务的运行级信息
- 17102001_systemd的运行级别与服务管理命令简介
- Linux运行级别与启动
- [svc][op]Ubuntu优化-服务管理(启动级别)
- 系统启动流程 chroot ldd,linux运行级别
- linux的运行级别与自动启动
- Linux进程启动过程分析do_execve(可执行程序的加载和运行)---Linux进程的管理与调度(十一)
- linux chkconfig命令 开机启动 运行级别 service sysv-rc-conf