Linux开机自启应用&开机执行脚本&监听端口应用挂掉了执行启动脚本

linux开机自启 背景 【Linux开机自启应用&开机执行脚本&监听端口应用挂掉了执行启动脚本】目前要部署一个spring boot框架的jar包,实现开机启动项目或者应用挂掉了 执行启动脚本
在root目录下有一个启动项目的脚本: app_start.sh
app_start.sh 里面内容是:

nohup java -jar xxx.jar>/dev/null 2>&1 &

linux执行 sh /root/app_start.sh 可以后台启动xxx.jar应用
一、开机自定义执行命令(脚本)(/etc/rc.d/rc.local) 简介
/etc/rc.d/rc.local 用于添加开机启动命令 /etc/rc.local是/etc/rc.d/rc.local的软连接 软连接相当于windows的快捷键

下图是linux服务器的启动流程,由此可知/etc/rc.d/rc.local文件是开机的时候会执行
Linux开机自启应用&开机执行脚本&监听端口应用挂掉了执行启动脚本
文章图片

配置开机执行
第一步:/etc/rc.local文件添加启动命令
vi /etc/rc.local

Linux开机自启应用&开机执行脚本&监听端口应用挂掉了执行启动脚本
文章图片

第二步:设置/etc/rc.d/rc.local 文件的可执行权限(重要) 文件不设置可执行权限,第一步配置的启动命令不会执行;
chmod +x /etc/rc.d/rc.local

第三步:重启服务器;查看应用是否启动成功
reboot

二、定时任务crontab 简介
Linux crontab是用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
1、cron是服务名称;
2、crond是后台进程;
3、crontab是计划任务表;
由上面的简介就知道crontab,是linux系统开机默认会启动的定时任务,并且每分锺会定期检查是否有要执行的工作;
这样我们就能定时的执行一个脚本,每10分钟、每半个小时的执行一次脚本;
开机自启&判断应用没启动,执行启动脚本
我们可以每10分钟、每半个小时 执行一次启动脚本的命令(命令如下),来保证应用始终是启动的,当然第一次 执行命令应用启动完成了,后面在执行启动命令的时候 报端口占用的异常,但是不影响已经启动的应用,所以也能满足了开机自启的需求。
sh /root/app_start.sh

基于此我们可以写一个判断脚本,判断 自启应用的端口是否被占用了,端口没被占用才执行启动脚本,避免无效的执行 启动应用脚本命令(sh /root/app_start.sh )
假如启动应用脚本命令(sh /root/app_start.sh )的应用端口是 9999,那么可以有一个/root/task_start.sh的脚本
/root/task_start.sh 脚本命令如下:
#!/bin/shtomcat=`netstat -an | grep ":9999" | awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l`if [ $tomcat -eq 0 ]; then #如果端口没有占用的话要怎么怎么样 sh /root/app_start.sh fi

这样就根据业务需求 每10分钟、半个小时执行一次命令 sh /root/task_start.sh
来判断应用的端口如果没有被占用,端口不存在说明应用没有运行,执行启动项目的命令(sh /root/app_start.sh )
crontab 添加周期性执行脚本
crontab命令
crontab [-u username]//省略用户表表示操作当前用户的crontab -e(编辑工作表) -l(列出工作表里的命令)

crontab时间格式实例
  • 每分钟执行一次
* * * * * sh /root/task_start.sh

  • 每10分钟执行一次
*/10 * * * * sh /root/task_start.sh

  • 每个小时执行一次
0 */1 * * * sh /root/task_start.sh

编辑周期性执行脚本 新增 每10分钟执行启动脚本
crontab -e

Linux开机自启应用&开机执行脚本&监听端口应用挂掉了执行启动脚本
文章图片

验证定时任务 是否新增完成
  • crontab -l 命令
    Linux开机自启应用&开机执行脚本&监听端口应用挂掉了执行启动脚本
    文章图片

  • Linux 查看定时器Crontab日志
    查看命令如下
tail -f /var/log/cron

最后验证应用是否自启 首先:可以手动关闭应用,10分钟后看应用是否还在启用中(首次验证可以把定时任务改成每分钟执行,来快速验证一下) 最后:重启服务器,查看应用是否在运行
reboot

完毕~

    推荐阅读