ubuntu下 设置开机自启脚本,启动java程序,并且作为守护进程检测java程序的运行状态,如果应用进程被杀掉,自动重启

ubuntu下 设置开机自启脚本,启动java程序,并且作为守护进程检测java程序的运行状态,如果应用进程被杀掉,自动重启

  1. java程序是jar包启动,读取jar包外部配置文件,需要先写一个外部的配置文件,然后再写一个java 程序启动脚本

外部配置文件 application.properties

server.port=8001
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver  
  1. 写启动java 程序脚本 start.sh
#!/bin/bash
nohup java -jar /home/yanrangnan/code/factoryInfo/factoryInfo-0.0.1-SNAPSHOT.jar -Dspring.config.location=/home/yanrangnan/code/factoryInfo/application.properties > /dev/null 2>&1 &

如果有需要可以将日志输出到某个文件 只需要把

/dev/null 改成想要输出的文件即可

  1. 写守护进程脚本,两个功能,

一, 可以监控 java factoryInfo应用进程是否还存活,

二,当检测的factoryInfo 进程死掉后,重启该进程

脚本如下:

#!/bin/sh
FILE_DIR=/home/yanrangnan/code/factoryInfo
rm -rf ${FILE_DIR}/daemon.log
touch ${FILE_DIR}/daemon.log
chmod 777 ${FILE_DIR}/daemon.log
while true
    do
    # 查找某个进程是否还活着
    COUNT=$(ps -ef |grep factoryInfo-0.0.1-SNAPSHOT.jar |grep -v "grep" |wc -l)
    if [ "$COUNT" -eq 0 ]
    then
        # 如果死掉就重启应用,修改成自己的启动应用脚本或命令,这里就启动上面写的start.sh
        ${FILE_DIR}/start.sh 
        date  >> ${FILE_DIR}/daemon.log
        echo "starting........" >> ${FILE_DIR}/daemon.log
    else
        date >> ${FILE_DIR}/daemon.log 
        echo "process already started!" >> ${FILE_DIR}/daemon.log
    fi
# 每隔60秒检查一次,并且将daemon.log的日志清理一波,减少没用的日志存在
# daemon.log 就是当出现问题的时候可以检查一下守护进程有没有正常工作   
sleep 60
echo "sleep" > ${FILE_DIR}/daemon.log
done

4 . 修改/etc/rc.local,设置开机启动守护进程daemon.sh
添加要启动的脚本
eg:
/home/yanrangnan/code/factoryInfo/daemon.sh

/etc/rc.local中的内容

[注意] 有的版本 修改rc.local 无效
原因从 Ubuntu 6.10开始,Ubuntu就将先前默认的bash shell 更换成了dash

通过#ls -al /bin/sh 查看
如果看到了 /bin/sh -> dash
那么就需要修改试一下,将dash

将默认的shell改成bash的方法:

扫描二维码关注公众号,回复: 15178682 查看本文章

方法1:在终端执行 sudo dpkg-reconfigure dash ,然后选择 no.

方法2:重新进行软链接:

sudo rm /bin/sh

sudo ln -s /bin/bash /bin/sh

这个时候开启就会自动启动/home/yanrangnan/code/factoryInfo/daemon.sh这个脚本

猜你喜欢

转载自blog.csdn.net/qq_36838406/article/details/108725715