linux 开机模式及创建开机/关机脚本
(摘自网络)
1、/etc/inittab 脚本,存储了开机模式,内有说明:
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this) //停机(勿设置它,否则无法开机)
# 1 - Single user mode //单用户模式
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)//无网络多用户模式
# 3 - Full multiuser mode //多用户模式
# 4 - unused //未用
# 5 - X11 //桌面模式
# 6 - reboot (Do NOT set initdefault to this) //重启(勿设置它,否则一直重启)
id:5:initdefault:
2、/etc 目录下的rc.local 、rcX.d文件init.d目录 都是链接,真实目录在/etc/rc.d下,rcX.d目录对应第一条的说明,根据/etc/inittab脚本的配置执行rc0.d ~ rc6.d 目录中的脚本,以rc5.d为例,内容如下:
其中K开头的脚本将在关机时执行,S开机执行,其后的数字表示执行等级,数字越小执行优先级越高。
而rc.local脚本则将在最后执行,如果你的脚本/程序想在任意模式下开机都执行起来,可以放到此脚本中。
3、有了上面两条,则可以写自己的开机/关机执行脚本了
开机执行:简单的做法是直接将脚本执行添加到rc.local脚本中
关机执行:
(1)在/etc/rc.d/init.d/下建立脚本程序YY,赋予执行权限chmod +x YY
(2)将该脚本连接到rc0.d、rc6.d(关机和重启,看你需要)目录下,并以K加数字开头,比如K01YY:
#ln -s /etc/rc.d/init.d/YY /etc/rc.d/rc0.d/K01YY
(3)将该文件在/var/lock/subsys建立一个同名空文件(否则关机并不会执行):
#touch /var/lock/subsys/YY
至此关机或重启后将执行脚本YY,但是你会发现第二次关机或重启操作将不会执行,原因在于重启后/var/lock/subsys文件夹的内容会清空,可以在rc.local中添加一行 touch /var/lock/subsys/YY,以后每次重启就都可以了。
4、插一个小工具symlinks,可用于查看指定文件的所有链接:
#symlinks -r / |grep '文件或目录'
5、chkconfig提供的功能实际上是与rcX.d对应的,并且使用chkconfig管理的脚本需要额外的注释如:
# chkconfig: 345 22 33
表示该脚本运行在3、4、5用户模式,并且启动优先等级为22,关闭优先等级33。
6、从上面可以看出来,其实启动脚本简单放到rc.local即可,因为不管什么模式都会执行它,实际中有人会遇到程序或脚本并没有启动或启动了但运行不正常的现象,很可能是程序或脚本依赖一些全局变量/etc/profile下的内容,而脚本执行顺序是:
... /etc/inittab >> /etc/rc.d/rc >> /etc/rc.d/rcx.d >> /etc/rc.local >> /etc/profile ...