1.使用场景
最近部署的一些项目,这些项目是在本地机房部署。像mysql、redis、nginx这些都可以把服务做到开机自启动,他们没有先后顺序,所以直接设置成开机自启动就可以了。但是我们自己写的服务,上面是需要等mysql、redis、nginx这些基础服务都启动后,才能启动的。
背景说明了,那我们如果去实现呢?
2.准备启动脚本
vi startup.sh
因为我的项目是javaweb,通过nohup守护进程的方式启动。内容如下:
#!/bin/bashservice mysql startecho "pc端开始休眠"sleep 60nohup java -jar /data/mgcr_pc-0.0.1-SNAPSHOT.jar --spring.profiles.active=dlmx --server.port=8071 >/dev/null 2>pclog &echo "设备端开始"nohup java -jar /data/device/mgcr_device-0.0.1-SNAPSHOT.jar --spring.profiles.active=dlmx --server.port=82 >/dev/null 2>devicelog &echo "微信端开始"nohup java -jar /data/mgcr_wechat-0.0.1-SNAPSHOT.jar --spring.profiles.active=dlmx --server.port=8083 >/dev/null 2>weixinlog &echo "小助手端"nohup java -jar /data/mgcr_helper-0.0.1-SNAPSHOT.jar --spring.profiles.active=dlmx --server.port=8087 >/dev/null 2>log &
如何延迟启动,重点就是在脚本上使用sleep 60 的命令,这样相对让该进程睡眠60秒。需要注意一点,那就是脚本里如果有调用了另外一个脚本,这种嵌套关系,可能会有问题。
给脚本赋执行权限:
chmod +x startup.sh
3.把脚本加入/etc/rc.d/rc.local
3.1.确保权限
chmod +x /etc/rc.d/rc.local
3.2.编辑/etc/rc.d/rc.local文件
vi /etc/rc.d/rc.local
这里特别要注意:因为我们java的环境是后启动的。所以如果要运行javaweb项目,则需要把JDK的初始化配置文件在这里重新定义一下。
同时这里要注意一下,脚本的启动要使用nohup的方式。防止关闭窗口后,服务也自动关停。
查看启动的结果:
systemctl status rc-local
4.重启服务器测试效果
reboot
微信扫一扫:关注我个人订阅号“猿小飞”,更多精彩文章在这里及时发布: