5个Linux设置开机启动某个程序(例如自己的项目)的方法
最近找了许多设置开机启动自己的程序的方法,都是基于shell脚本的启动方式,大致分为3种(下面的脚本是指“运行目标程序的shell命令的脚本”):
- ①将脚本建立软链接放到/etc/rc*.d/(或者/etc/rc.d/rc*.d/)文件夹中)-----对应方法一、三、四
- ②注册service,调用自己建的脚本------对应方法二
- ③直接把运行目标程序的shell命令写进/etc/rc.local-----对应方法五
(至于脚本怎么写,随便看看几个参考链接就应该懂了)
现在根据别人的博客总结一下,理解还不是很深,有可能归类不是很正当。
(注意:自己新建文件时,特别是服务的文件记得“chmod -x 文件名”一下,修改文件可执行权限)
方法一、ln -s 直接将自己的脚本在/etc/rc*.d/(或者/etc/rc.d/rc*.d/)文件夹中建立软链接
参考链接:https://blog.csdn.net/u013554213/article/details/86584705
(注:该博客面有两个方法,其中第一个方法对应我这边的方法4,但描述不详细,只看软链接方法即可)
方法二、进行service注册
-
service注册方法(1) systemd添加自定义系统服务(好像是比较正宗的注册方法)
-
service注册方法(2) 在/etc/init.d目录下直接建(包含LSB信息,以及start、stop、restart方法的)脚本文件,然后使用systemctl命令使其能开机启动(systemctl enable xxx)
-
service注册方法(3)使用chkconfig命令注册(我还没试过)
方法三、Update-rc.d命令用来设置优先级(/etc/rc*.d这些文件夹)
$ sudo update-rc.d nginx defaults #增加服务,会开机启动服务
$ sudo update-rc.d -f nginx remove #完全禁用Nginx,删除所有 /etc/rcX.d/ 中的相关链接
参考链接:
如果要添加为开机启动执行的脚本文件,可先将脚本复制或者软连接到/etc/init.d/目录下,然后用:update-rc.d xxx defaults NN命令(NN为启动顺序),将脚本添加到初始化执行的队列中去。
- 创建要开机自动执行的脚本:/home/test/blog/startBlog.sh,
- 给予可执行权限:chmod +x /home/test/blog/startBlog.sh。
- 在 /etc/init.d 目录下创建链接文件到前面的脚本: ln -s /home/test/blog/startBlog.sh /etc/init.d/startBlog。
- 进入/etc/init.d目录,用 update-rc.d 命令将连接文件 startBlog 添加到启动脚本中去:update-rc.d startBlog defaults 99。
其中的99表示启动顺序,取值范围是0-99。序号越大的越晚执行。 移除启动的脚本:update-rc.d -f startBlog remove。 -f 选项表示强制执行。- 看这个->>简洁版(执行的脚本要加上LSB信息,不然放入启动脚本的时候会报错无法开机启动)
方法四、sysv-rc-conf(跟上面方法很相似,只是最后用了这个工具,参考意义不大)
方法五、(最粗暴~)直接把运行目标程序的shell命令写进/etc/rc.local
参考链接:Ubuntu 16.04设置rc.local开机启动命令/脚本的方法
补充:ubuntu设置快捷启动自己的程序
参考链接: ubuntu快捷启动方法