linux启动jar包sh脚本
sh脚本(直接重启,推荐):
#!/bin/bash # 配置部分 JAR_PATH="/xxx/xxxxx/xxxxxx/xxxxx.jar" # JAR文件路径 LOG_PATH="/xxx/xxxx/xxxxx/xxxxx.log" # 日志文件路径 # 获取正在运行的进程的PID PID=$(ps -ef | grep xxxxx.jar | grep -v grep | awk '{print $2}') # 检查PID是否存在 if [ -n "$PID" ]; then echo "Found existing process with PID: $PID" echo "Stopping the existing process..." kill -9 $PID echo "Existing process stopped." else echo "No existing process found." fi # 启动新的进程 echo "Starting process..." nohup java -jar $JAR_PATH > $LOG_PATH 2>&1 & # 获取新的PID NEW_PID=$! echo "New process started with PID: $NEW_PID" # 打开日志文件进行实时监视 echo "Tailing log file: $LOG_PATH" tail -f $LOG_PATH
sh脚本(直接重启,带日志文件备份-推荐):
#!/bin/bash # 配置部分 JAR_PATH="/xxx/xxxxx/xxxxxx/xxxx.jar" # JAR文件路径 LOG_PATH="/xxx/xxxxx/xxxxxx/logs/run.log" # 日志文件路径 # 获取当前日期和时间 CURRENT_DATE=$(date +"%Y%m%d") LOG_DIR=$(dirname $LOG_PATH) LOG_BASE_NAME=$(basename $LOG_PATH .log) # 生成备份日志文件名 BACKUP_LOG_PATH="${LOG_DIR}/${LOG_BASE_NAME}_${CURRENT_DATE}" # 找到合适的序号 i=1 while [ -f "${BACKUP_LOG_PATH}_${i}.log" ]; do i=$((i + 1)) done BACKUP_LOG_PATH="${BACKUP_LOG_PATH}_${i}.log" # 备份日志文件 if [ -f "$LOG_PATH" ]; then echo "Backing up log file to $BACKUP_LOG_PATH" mv "$LOG_PATH" "$BACKUP_LOG_PATH" else echo "No existing log file to back up." fi # 获取正在运行的进程的PID -----------------------------------------------也要修改jar名----------------------------------------------- PID=$(ps -ef | grep xxxx.jar | grep -v grep | awk '{print $2}') # 检查PID是否存在 if [ -n "$PID" ]; then echo "Found existing process with PID: $PID" echo "Stopping the existing process..." kill -9 $PID echo "Existing process stopped." else echo "No existing process found." fi # 启动新的进程 echo "Starting process..." nohup java -jar $JAR_PATH > $LOG_PATH 2>&1 & # 获取新的PID NEW_PID=$! echo "New process started with PID: $NEW_PID" # 打开日志文件进行实时监视 echo "Tailing log file: $LOG_PATH" tail -f $LOG_PATH
sh脚本(带参执行 stop / start / restart):
#!/bin/sh #这里需要设置2个变量,jar包需要和这个sh 在一个目录 #jar包名字 jarName='dataAccess-business.jar' #输出的log 以及pid.log的前缀名字 logName='business' #将要执行的jar包 tpid='ps aux | grep -c ${jarName}' start() { if [ $tpid -le 1 ]; then java -Xms512m -Xmx1024m -jar ./${jarName} 5 > ./${logName}_console.log & echo $! > ./${logName}_pid.log else echo "alread start. PID:`cat ./${logName}_pid.log`" exit 0 fi } stop(){ pid=`cat ./${logName}_pid.log` echo "Kill pid:$pid" kill -9 $pid #rm ./${logName}_pid.log #清空 log 文件 >./${logName}_pid.log } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) printf 'Usage: %s {start|stop|restart}\n' "$prog" exit 1 ;; esac #使用方法 #./myapp.sh start #./myapp.sh stop #./myapp.sh restart
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!