linux服务器开机自启动某个脚本程序(可设定启动优先级的高级启动方式)

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文本中(方便看开机自启动后的效果)

注意:#! /bin/sh    #一定要指明解释器位置,否则开机启动时,找不到解释器

======================================================================================

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*

linux服务器开机自启动某个脚本程序(可设定启动优先级的高级启动方式)_第1张图片

下面有这么几个目录值得注意:
rcS.d rc0.d rc1.d ... rc6.d ,
(0,1... 6 代表启动级别: 0代表停止,1代表单用户模式,2-5代表多用户模式,6代表重启)


2)查看当前系统的启动级别

$sudo runlevel 


我的当前系统启动级别是:5

 

3)进入对应的系统启动级别文件夹,我的是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')

linux服务器开机自启动某个脚本程序(可设定启动优先级的高级启动方式)_第2张图片

确实开机自启动执行了。这个只是简单的执行脚本,更复杂逻辑的脚本也可以自启动啦.......

你可能感兴趣的:(Linux)