ubuntu中启动项目init
昨天在看如何配置svn服务开机自动运行,在ubuntu的论坛上找到了这个资料。
启动脚本都在/etc/init.d文件夹里,同时在/etc文件夹里面还有一系列的类似 rc1.d,rc2.d等等,这对应不同运行级别时系统开机的启动进程,我们一般是进入X 界面,对应的运行级别是5,所以X界面下的开机启动进程都在rc5.d里面描述,实际上rc*.d里面的都是位于/etc/init.d脚本的软连接, /etc/init.d里面包含所以的服务,而rc*.d里面的服务是前者的子集,也就是随机启动的一些服务。而且rc*.d里面的文件都以S或者K开 头,S开头说明是随机启动的服务,K开头的是不随机启动的服务。说到这里我想你已经明白怎样解决问题了:将rc5.d文件夹里面的,你不想随机启动的服务 所对应的文件名改一下就行了,将第一个字母S改为K,那么下次开机他就不会随机启动了。或者干脆rm那个文件就OK啦。
upstart 和ubuntu启动过程原理介绍
| init telinit runlevel /etc/event.d/ /etc/init.d/ /etc/rcX.d/ |
| start on runlevel 2 stop on runlevel [!2] console output script set $(runlevel --set 2 || true) if [ "$1" != "unknown" ]; then PREVLEVEL=$1 RUNLEVEL=$2 export PREVLEVEL RUNLEVEL fi exec /etc/init.d/rc 2 end script |
你可以ls/etc/init.d/看一下里面的内容,对它有个大致的了解。/etc/init.d/中存放的是服务(services)或者任务 (tasks)的执行脚本。可以这么说,只要你安装了一个程序(特别是服务程序daemon),它可以在系统启动的时候运行,那么它必定会在/etc /init.d/中有一个脚本文件。我们还回到上面的rc2文件,它执行了一个exec /etc/init.d/rc2的命令。也就是说,给/etc/init.d/rc脚本传递了一个参数"2",让它执行。我们仔细查看一下rc脚本(很 长,耐心点),能看到这样的一段:
| # Now run the START scripts for this runlevel. # Run all scripts with the same level in parallel ....... for s in /etc/rc$runlevel.d/S* ....... |
进入/etc/rcX.d/,ls -l/etc/rcX.d/看看有些什么内容?哈哈,没错,都是一些到/etc/init.d/中脚本的符号链接。不同的是它们的开头加上了S和一个数 字。熟悉原本init的人应该知道,S表示在启动时运行,数字则表示执行的先后顺序。
这样一来,upstart管理的ubuntu启动过程应该就清楚了。梳理一下:
1,内核启动init
2,init找到/etc/event.d/rc-default文件,确定默认的运行级别(X)
3,触发相应的runlevel事件,开始运行/etc/event.d/rcX
4,rcX运行/etc/init.d/rc,传入参数X
5,/etc/init.d/rc脚本进行一系列设置,最后运行相应的/etc/rcX.d/中的脚本
6,/etc/rcX.d/中的脚本按事先设定的优先级依次启动,直至最后给出登录画面(启动X服务器和GDM)
理解了这些,手动配置开机服务的启动与否就很简单了。Ubutnu默认的启动级别是2,不想启动的程序,只要把相应的符号链接从/etc/rc2.d/中删去即可!
Ubuntu启动流程解析
本文详细介绍了Ubuntu系统的启动流程,从内核启动init进程开始,通过upstart管理服务进程,涉及rc-default、rcX等关键文件的作用及配置方法。
1229

被折叠的 条评论
为什么被折叠?



