控制开机自启动的命令
负责开机服务的程序是chkconfig ,其实该命令管控了整个计算机的生命周期,并不仅仅是开机时刻
1 | //查看有哪些开机执行的服务 |
生命周期分为7个等级,包括
- 等级0表示:表示关机
- 等级1表示:单用户模式
- 等级2表示:无网络连接的多用户命令行模式
- 等级3表示:有网络连接的多用户命令行模式
- 等级4表示:不可用
- 等级5表示:带图形界面的多用户模式
- 等级6表示:重新启动
准备一个符合chkconfig的脚本
如果想准备一个可以被chkconfig调用的脚本需要在文件头包含以下两行
- “#!/bin/sh” : 代表该文件是个可以被sh执行的脚本
- “chkconfig: - 85 15”: 代表该文件的chkconfig配置,横线代表默认等级345,第一个数字代表启动顺序优先级,第二个数字代表关闭优先级,都是数字越小优先级越高
1 | #!/bin/sh |
脚本必须包括至少start 和 stop两套命令,其中
- $0 代表shellname本身
- $1 代表chkconfig执行shellname的第一个参数
因为chkconfig会在0-6的等级中默认采用 start 和 stop 参数来执行shellname,在目录 /etc/rc.d 中可以看到0-6的文件夹,具体细节请参考Linux详细教程
1 | case "$1" in |
把脚本移动到指定目录
在加入chkconfig服务之前,需要将脚本移动到目录 /etc/init.d/ 然后需要 给予脚本执行权限
1 | //移动文件 |
加入chkconfig 服务
在加入chkconfig服务器后,可以在任意位置使用 service shellname command来执行
1 | //把自定义的shellname脚本加入chkconfig服务 |
在加入了chkconfig服务之后可以这样调用
1 | [root@localhost /]# service shellname start |
写一个正确的shell脚本
shell脚本有自己的一套语法,比如switch…case… 就看着挺奇怪,注意不要瞎用[] 和 () 括号,代表什么内部命令,折腾了我好久。。。具体怎么写你自己看吧