场景介绍
在很多场景中,我们希望自己的服务在机器启动的时候就一起启动。
在Windows下,这是容易的,也是被我们普遍接受的,因为几乎所有的软件厂商都会在设置中添加一个开机启动的勾选框,还有甚者,会将选框默认勾选☑️。
但转到Linux之后,这件事情就并不总那么容易了。
当我们需要开机启动一个例如Nginx之类的常见服务,如果你是使用默认的包管理工具进行安装的,那很大可能你只需要一行命令即可完成服务开机启动的配置
systemctl enable nginx
当需要开机启动的是一个部署在docker容器中的应用,那同样不需要太折腾,你只需要在容器创建的时候加上一个参数
--restart
而第三种情况,当你手写了一个脚本服务,或者你的应用需要使用一行shell启动时,又该如何呢?
解决方案当然不是唯一的,这很好理解,毕竟在Linux下你甚至可以修改内核。
这边提供一个兼具合理与舒适的解决方案供您参考
解决方案
假设您需要开机启动的脚本(/home/hello)如下
#!/bin/bash
date >> /tmp/hello.log
给予hello执行权限
sudo chmod a+x /home/hello
将hello脚本软链接至/etc/init.d目录下
sudo ln -s /home/hello /etc/init.d/hello
更新启动配置
sudo update-rc.d hello defaults 99
其中99为开机启动顺序
shell执行截图如下
验证
重启机器,检验/tmp/hello.log中是否包含一条时间信息
cat /tmp/hello.log
备注
如果需要删除配置,可以执行下面这条命令
sudo update-rc.d -f hello remove
支持作者
欢迎关注作者公众号