1. linux启动步骤
(1)打开计算机电源,开始读取bios并进行主机的自我测试
(2)通过bios取得第一个可开机设备,读取主要开机区(MBR)取得启动装载程序;
(3)取得kernel并加载到内存且检测系统硬件
(4)内核主动调用init进程,init进程是Linux的根进程,所有的系统进程都是它的子进程。
(5)init进程开始执行系统初始化,init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别。通常情况下 /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录(/etc/rc.d/rc.sysinit或rc-sysinit.conf)
(6)依据init的设置进行启动(/etc/rc.d/rc[0-6].d/*)
(7)加载本机设置,启动登录管理器,等待用户登录
说明:
linux中/etc/init.d和/etc/rc.local的小区别:
/etc/rc.local文件中的语句和/etc/init.d/中的启动脚本执行顺序不一样的,/etc/init.d/中的启动脚本较先执行的,/etc/rc.local文件中的语句是开机的最后阶段执行的。在/etc/init.d/启动的时候,系统尚未完全启动,只能执行一些启动服务的命令。而/etc/rc.local文件中的语句是开机的最后阶段执行,那个时候系统已经完全启动。一般来说,/etc/init.d文件夹中的东西通常用来启动服务,/etc/rc.local文件启动程序。
2.linux运行级别
0 关闭系统
1 单用户模式,只允许root用户对系统进行维护
2 无网络的多用户模式
3 有网络的字符界面多用户模式
4 不可用
5 图形化界面
6 重启系统
切换运行级别: init [0123456Ss],如下:
init 0 命令关机;
init 6 命令重新启动。
3. Linux添加开机启动项有三种方法:
3.1 编辑文件 /etc/rc.local
在文件末尾加上你开机需要启动的程序或执行的命令即可(执行的程序需要写绝对路径,添加到系统环境变量的除外),Ubuntu开机之后会执行/etc/rc.local文件中的脚本。如:
/etc/init.d/nginx start #nginx开机启动
3.2 新建shell脚本
将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本
3.3 设置开机启动服务(推荐)
首先,将启动文件复制到 /etc/init.d/或者/etc/rc.d/init.d/(前者是后者的软连接)下并修改文件权限具有可执行权限,启动文件编写可以参考/etc/rc.d/init.d/目录下已存在的文件。如下(假设启动文件为test):
cp test /etc/init.d/
chmod +x /etc/init.d/test
然后,将该脚本放到启动列表中去,不同的linux发行版命令有所不同。
ubuntu:
update-rc.d test defaults 95 (说明:数字95是脚本的启动顺序号,启动顺序值越小越优先启动,在启动多个具有依赖的应用时,该启动顺序号非常有用)
如果要重从开机列表中删除该启动项,可以执行:
update-rc.d -f test remove
centos/redhat:
添加:
chkconfig --add test
移除:
chkconfig --del test
说明:service和chkconfig命令的使用与区别
service的执行脚本放在 /etc/service下,凡是能使用: service 服务 动作(如:service papche2 restart)的指令都可以在/etc/init.d目录下执行。其实就是执行:/etc/init.d apache2 restart
网友评论