编写Shell脚本
我们可以在自己的服务器中,指定的目录里面,创建 xxx.sh 脚本文件。
创建.sh 文件,文件名不用和我一样,根据你们的需求创建脚本名字就好了。
touch carRental.sh

补充shell脚本
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
# 定义基础路径变量
BASE_PATH="/usr/local/app_local/apps"
echo 停止原来运行中的工程
# 这个名字根据自己需要起的名字
APP_NAME=car-cental-server
# 通过 ps 命令查找正在运行的项目进程 ID
tpid=$(ps -ef | grep "$APP_NAME" | grep -v grep | grep -v kill | awk '{print $2}')
# 判断进程 ID 是否存在
if [ -n "$tpid" ]; then
echo '正在停止进程...'
# 尝试使用 SIGTERM 信号(15)优雅地停止进程
kill -15 "$tpid"
fi
# 等待 2 秒,让进程有时间停止
sleep 2
# 再次检查进程是否还在运行
tpid=$(ps -ef | grep "$APP_NAME" | grep -v grep | grep -v kill | awk '{print $2}')
if [ -n "$tpid" ]; then
echo '强制终止进程!'
# 使用 SIGKILL 信号(9)强制终止进程
kill -9 "$tpid"
else
echo '进程停止成功!'
fi
echo 准备从 Git 仓库拉取最新代码 # 这个路径是你自己项目的路径(前提:你的项目已经上传到 git 中)
# 切换到项目所在目录
cd "$BASE_PATH/car_rental"
# 检查目录切换是否成功
if [ $? -ne 0 ]; then
echo "进入项目目录失败,脚本终止"
# 若失败,退出脚本并返回状态码 1
exit 1
fi
echo 开始从 Git 仓库拉取最新代码
# 从 Git 仓库拉取最新代码
git pull
# 检查拉取操作是否成功
if [ $? -ne 0 ]; then
echo "代码拉取失败,脚本终止"
exit 1
fi
echo 代码拉取完成
echo 开始打包
# 使用 Maven 进行项目打包,跳过测试
mvn clean package -Dmaven.test.skip=true
# 检查打包操作是否成功
if [ $? -ne 0 ]; then
echo "打包失败,脚本终止"
exit 1
fi
# 修正为正确的 target 目录路径
cd "$BASE_PATH/car_rental/target"
# 检查是否成功进入 target 目录
if [ $? -ne 0 ]; then
echo "进入 target 目录失败,脚本终止"
exit 1
fi
echo 启动项目
# 使用 nohup 命令在后台启动项目,并将日志输出到指定文件
nohup java -jar car_rental_separate-0.0.1-SNAPSHOT.jar &> "$BASE_PATH/car_rental.log" &
# 检查项目启动是否成功
if [ $? -ne 0 ]; then
echo "项目启动失败,脚本终止"
exit 1
fi
echo 项目启动完成
编码格式要弄对

进入的target目录

jar包名称

脚本解读

修改脚本文件权限
#直接输入脚本名称回车
carRental.sh

为啥脚本写好了,跑不了,因为我们没有权限执行。
授权
chmod 777 carRental.sh
可以看到授权之后,脚本颜色变成绿色了,代表可以执行了。

测试启动下
./carRental.sh
