Linux系统下如何设置开机启动项
1.修改/etc/rc.d/rc.local文件,在rc.local 后面加上你的shell脚本命令
赋值权限
chmod u+x app.sh
修改后的rc.local如下
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/bin/bash /usr/myfoder/camtest/Debug/app.sh
增加rc.local的执行功能
chmod +x /etc/rc.d/rc.local
2. 使用最原始的方式,在rc.d里面创建启动项
新建shell脚本
#!/bin/sh
#chkconfig: 2345 80 90
#description:AutoStart
#下面是脚本正文
.....
其中AutoStart是启动的脚本名称描述,与shell脚本文件名相同!
把Shell脚本放入/etc/rc.d/init.d/目录下
sudo mv ./AutoStart /etc/rc.d/init.d/AutoStart
添加脚本的可执行权限
chmod u+x /etc/rc.d/init.d/AutoStart
使用chkconfig命令把脚本添加进开机启动项目中
chkconfig --add AutoStart //在不同模式下增加连接(ln -s)
chkconfig AutoStart on //systemctl enable AutoStart
执行完成后,可以检查一下/etc/rc.d/rc*.d下有没有生成相应的启动链接,指向刚才的脚本,80指的是启动的顺序,90指的是停止的顺序
传入参数:
service network start
network的绝对路径 =>$0
start =>$1
删除开机自启动服务:
chkconfig --del AutoStart
rm -rf /etc/rc.d/init.d/AutoStart
服务不支持 chkconfig 的解决方法
系统服务,在chkconfig --add servername的时候老是提示服务不支持 chkconfig,经过查找,解决办法如下。
示例,auto_run的前三行如下:
#!/bin/sh
#chkconfig: 2345 80 90
#description:auto_run
第一行,告诉系统使用的shell,所以的shell脚本都是这样。
第二行,chkconfig后面有三个参数2345,80和90告诉chkconfig程序,需要在rc2.d~rc5.d目录下,创建名字为 S80auto_run的文件连接,连接到/etc/rc.d/init.d目录下的的auto_run脚本。第一个字符是S,系统在启动的时候,运行脚 本auto_run,就会添加一个start参数,告诉脚本,现在是启动模式。同时在rc0.d和rc6.d目录下,创建名字为K90auto_run的 文件连接,第一个字符为K,告诉脚本,现在是关闭模式。不会运行
注意上面的三行中,第二,第三行是必须的,否则在运行chkconfig --add auto_run时,会报错。
常见的错误
“服务不支持 chkconfig”:
请注意检查脚本的前面,是否有完整的两行:
#chkconfig: 2345 80 90
#description:auto_run
在脚本前面这两行是不能少的,否则不能chkconfig命令会报错误。
如果运行chkconfig老是报错,如果脚本没有问题,建议直接在rc0.d~rc6.d下面创建到脚本的文件连接来解决,原理都是一样的。