1.应用背景
我们在服务器上开发时,经常需要将某个程序开机就自启动,比如说系统的mysql服务就是开机自启动的。那么我们如何能够让自己的程序开机自启动呢?
2.实现步骤
1. 写好执行脚本,比如我在当前Desktop上写了个hello.sh,功能是:输出'succeed',以追加方式,重定向到 /home/xxx/Desktop/hello_store.txt文本中(方便看开机自启动后的效果,如果成功,文本中会出现'succeed')
#! /bin/sh #一定要指明解释器位置,否则开机启动时,找不到解释器 echo 'succeed' >> /home/xxx/Desktop/hello_store.txt #输出'succeed',追加到 /home/xxx/Desktop/hello_store.txt文本中(方便看开机自启动后的效果)
======================================================================================
2. 将hello.sh放到/etc/init.d目录下,在添加可执行权限
1)将hello.sh放到/etc/init.d目录下:
$sudo mv ./hello.sh /etc/init.d/
2)去/etc/init.d/目录看hello.sh的属性
$ cd /etc/init.d/ $ ls -alh | grep hello.sh
hello.sh没有可执行x权限
3)为hello.sh添加可执行权限
$ chmod a+x hello.sh $ ls -alh | grep hello.sh
有执行x权限了
======================================================================================3. 创建符号连接
1)查看/etc目录下的rc文件夹
$ cd .. $ ls -alh | grep rc*
下面有这么几个目录值得注意:
rcS.d rc0.d rc1.d ... rc6.d ,
(0,1... 6 代表启动级别: 0代表停止,1代表单用户模式,2-5代表多用户模式,6代表重启)
2)查看当前系统的启动级别$sudo runlevel
我的当前系统启动级别是:53)进入对应的系统启动级别文件夹,我的是rc5.d,建立软链接,链接到/etc/init.d/下的hello.sh
$ cd rc5.d/ $ sudo ln -vsf /etc/init.d/hello.sh S98helloSoftLink #ln -vsf(-v 显示链接过程 -s 软链接 -f 强制链接) 链接的文件位置 自己取得软连接名
说明一下:命名规则是有规定的,开头必须大写S,后面跟的数字98,是你设定的启动序号,即优先级,后面名字无限定。
看一下是否有这链接:
$ ls -alh | grep S98helloSoftLink
有的
4. 然后启动系统,测试一下设置是否有效。(看Desktop下hello_store.txt有没有‘succeed')
确实开机自启动执行了。这个只是简单的执行脚本,更复杂逻辑的脚本也可以自启动啦.......