Shell脚本优化项目启停

Shell脚本优化项目启停

日常工作中,部署运行是最基础的操作,开发/运维人员都会告诉你如下:

  1. ps -ef | grep your.jar
  2. kill -9 [pid] 备注 -9 真的慎用
  3. 备份你的jar包,部署你的新jar包
  4. 再启动项目,nohup java -jar your.jar >/path/to/your/app.log &

但是 ! 但是 ! 但是 上面的操作久了 你就会觉得真麻烦! 如果你不嫌麻烦,那就继续这么做吧

备注: kill -15 [pid] 当然更好,或者 kill [pid]。
备注: 合理使用 chatGPT等是一个好的工作方式。

stop.sh

写一个项目停止的脚本,替代步骤1和步骤2。

#!/bin/bash

# Specify the name of the JAR file to stop
jar_name="xx.jar"

# Find the process ID (PID) of the JAR
pid=$(ps aux | grep "$jar_name" | grep -v "grep" | awk '{print $2}')

# Check if the process is running
if [ -z "$pid" ]; then
    echo "No process found for $jar_name"
else
    echo "Stopping process $pid for $jar_name"
    kill $pid
fi

在Linux/Unix系统中,你可以使用chmod +x stop.sh命令赋予脚本执行权限,然后通过./stop.sh命令执行脚本。

start.sh

写一个项目启动的脚本,替代步骤4。
可能你觉得用步骤4也挺好的,个人觉得使用脚本更好的原因如下:

  1. 标准化,团队中有一个标准是高效的前提。
  2. 简单,团队中有标准,运维才会减少错误的发生。比如A启动加了个参数,B不知道,更多的时候,错误的发生是信息不对称。
#!/bin/bash
# 项目名称
APP_NAME="your_app.jar"
# 设置jar包位置
APP_PATH="/your/app/apply/path/your_app.jar"
# 设置Java虚拟机的内存参数
JAVA_OPTS="-Xmx512m -Xms256m"
# 设置应用日志路径
APP_LOG_PATH="/your/app/apply/path/app.log"
# 设置应用错误日志
APP_ERROR_LOG_PATH="/your/app/apply/path/error.log"

# 启动JAR包,并将标准错误输出重定向到日志文件
java $JAVA_OPTS -jar $APP_PATH  >> $APP_LOG_PATH 2>> $APP_ERROR_LOG_PATH &

echo "正在启动应用 $APP_NAME"

# 获取启动的Java进程ID
JAVA_PID=$!

# 等待Java程序启动完成,最多等待60秒
timeout=60

while [ $timeout -gt 0 ]
do
  # 检查端口是否被监听 端口 写你自己的程序端口哈
  if netstat -tuln | grep ":9002" >/dev/null; then
    echo "Java程序启动成功。"
    exit 0
  else
    echo "Java程序正在启动...."
  fi
  sleep 1
  timeout=$((timeout - 1))
done

echo "程序启动超时或失败,请查看日志确定程序状态 ${$APP_LOG_PATH}"

备注:脚本内容仅供参考,毕竟需求决定你脚本内容! 这里仅仅是抛砖引玉!谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值