java jar 运行自动重启 linux

Shell脚本服务器监控与重启
本文介绍了一个使用Shell脚本实现的简单服务器进程监控及自动重启机制。该脚本通过检查目标Java进程是否运行来判断服务器状态,并在进程停止时自动启动服务器。此外,还包含了忽略特定信号、资源限制设置以及后台运行Java应用程序的相关命令。
echo "Current DIR is " $PWD

# ignore signal hup int quit tstp
trap "" 1 2 3 24

 start_server() {
        ulimit -c unlimited
  #      nohup java -jar LF_S_SignalProc.jar  -Dfile.encoding=UTF-8 >> ist.log & 


        java -jar LF_S_SignalProcDemo.jar -Dfile.encoding=UTF-8  >> ist.log & echo $! > java.pid
#-Dfile.encoding java -jar -Dfile.encoding=UTF-8 LF_S_SignalProc.jar >> ist.log=UTF-8
}


 kill_server() {
   #     ps -aux | grep java | grep -v grep | awk {'print $2'} | xargs kill -2
        pid=$(cat java.pid )
        kill -9 $pid
}

while [ 1 ]
do
        propserverpid=`ps -ef | grep java | grep -v grep |awk '{print $2}'`

        ${now}${propserverpid} >> pid.log
        if [ ! "$propserverpid" ]
        then
                echo "propserver is down, now starting ..."
                start_server
        fi
        sleep 1
done

 

### Linux 环境下 Jar自动重启的实现方法 在 Linux 系统中,可以通过编写 Shell 脚本来监控并自动重启指定的 JAR 文件。以下是具体的实现过程: #### 1. 编写监控与重启脚本 可以基于 `monitor_adpter.sh` 的模板来构建自己的脚本。以下是一个通用版本的脚本示例[^2]。 ```bash #!/bin/bash JAR_PATH="/path/to/your-jar-file.jar" PID_FILE="/var/run/your-jar-file.pid" # 检查进程是否存在 check_process() { if [ -f "$PID_FILE" ]; then PID=$(cat $PID_FILE) ps -p $PID > /dev/null 2>&1 && return 0 || return 1 fi return 1 } # 启动服务 start_service() { nohup java -jar $JAR_PATH > app.log 2>&1 & echo $! > $PID_FILE echo "Service started with PID $(cat $PID_FILE)" } # 停止服务 stop_service() { if check_process; then kill $(cat $PID_FILE) rm -f $PID_FILE echo "Service stopped." else echo "Service is not running." fi } # 主逻辑 if ! check_process; then start_service fi ``` 此脚本会定期检查目标 JAR 是否正在运行,如果未找到对应的进程,则重新启动它。 --- #### 2. 设置脚本权限 为了使脚本能够正常执行,需要赋予其可执行权限。通过命令完成授权操作[^3]: ```bash chmod +x your-script-name.sh ``` 或者按照某些文档建议的方式授予更广泛的权限(需谨慎使用): ```bash sudo chmod 777 your-script-name.sh ``` --- #### 3. 配置定时任务 (Cron Job) 为了让脚本周期性地运行,可以将其加入系统的 Cron 守护进程中。编辑用户的 Crontab 文件[^1]: ```bash crontab -e ``` 然后添加如下条目以每五分钟检测一次 JAR 运行状态: ```cron */5 * * * * /path/to/your-script-name.sh >> /path/to/cron-log.txt 2>&1 ``` 这将确保即使程序意外退出也能被迅速恢复。 --- #### 4. 测试验证 最后一步是对整个流程进行全面测试,确认从手动触发到自动化调度都能按预期工作无误。 --- ### 注意事项 - 替换 `/path/to/your-jar-file.jar`, `/var/run/your-jar-file.pid` 和其他占位符为你实际使用的路径和文件名。 - 如果项目依赖外部配置或环境变量,请记得初始化这些参数后再调用 Java 应用。 - 日志记录对于排查问题非常重要;考虑增加详细的日志输出以便后续分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值