Shell脚本启动jar

该脚本主要用于管理一个名为invoice的应用程序,包括启动、停止、重启和备份功能。通过检查进程ID来确定应用状态,并使用jps命令进行进程监控。在启动时,配置了Java参数并以守护进程方式运行。备份功能则将当前jar文件重命名以备恢复。此脚本可以在本地直接执行,也可通过SSH远程调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.编写脚本xxx.sh

#!/bin/bash
PACKAGE_DIR=/home/program/invoice/
JAR=invoice.jar
APP_NAME="$PACKAGE_DIR$JAR"
PID=0
#加载jps命令防止ssh不能使用jps
source /etc/profile;jps

#检查进程id
checkpid(){
 running=`jps -l | grep $APP_NAME`
 if [ -n "$running" ] ;
 then 
 PID=`echo $running |awk '{print $1}'`
 else
 PID=0
 fi
}
#停止进程
stop(){
  checkpid
  echo -e "stop before checkpid $PID"
  if [ $PID -ne 0 ];
  then
  echo -e "stopping $APP_NAME PID=$PID"
  kill $PID
  else
  echo -e "$APP_NAME not running"
  fi
}
#启动进程
start(){
 checkpid
 echo -e "start before check $PID"
 if [ $PID -ne 0 ];
 then 
 echo -e "warn:$APP_NAME already started! (pid=$PID) "
 else
 echo -e "Starting $APP_NAME "
 nohup java -jar -Dspring.application.name=invoice -Dspring.cloud.config.profile=dev -Xms256m -Xmx256m -Xss256k $APP_NAME  > /dev/null 2>&1 &
 checkpid
 if [ $PID -ne 0 ];
 then 
 echo -e "Started success"
 else
 echo -e "Failed please review logs"
 fi
 fi
}
#备份包
backup(){
 cd $PACKAGE_DIR
 mv "$JAR" "$JAR`(date +%Y%m%d-%H%M%S)`"
}
#重启
restart(){
 stop
 sleep 3s
 start
}

#判断shell执行的命令
if [ ! -n "$1" ];
then 
echo "not input default restart"
 restart
else
 echo "input $1"
 case "$1" in
 'start')
 start
;;
 'stop')
 stop
;;
 'restart')
 restart
;;
 'backup')
 backup
;;
*)
echo "usage :$1 {start|stop|restart}"
exit 1
esac
fi

2.本地重启  

./xxx.sh

3.远程ssh

ssh root@ip  "bash xxx.sh  && exit"

注意问题:

ssh命令后面跟shell的时候,最好用引号括起来,多条命令用&&来逐条执行

不过命令一般需要设置免密登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值