平常我们直接 java -jar xxx.jar 启动项目,

创建run.sh 脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh

# 定义变量
NAME="你的进程名称" # 要管理的进程名称
PROCESS="/path/to/deploy/jar/xxx.jar" # 进程的 JAR 文件路径
TIMESTR=$(date "+%Y%m%d%H%M%S") # 当前时间戳

# 打印进程名称
echo $NAME

# 查找进程 ID
ID=$(ps -ef | grep "$NAME" | grep -v "grep" | awk '{print $2}')

# 检查进程是否存在
if [ -z "$ID" ]; then
echo "process id is empty, process is not existed..."
echo "process will start..."
nohup java -jar -Xmx5120m -Xms5120m -Xmn1706m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:SurvivorRatio=8 $PROCESS &
echo "process has started..."
else
echo $ID
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "process will restart..."
nohup java -jar -Xmx5120m -Xms5120m -Xmn1706m -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:SurvivorRatio=8 $PROCESS &
echo "process has restarted..."
fi

配置服务器重启 自动执行脚本

将脚本上传到服务器上后, 查看脚本权限, 用findshell的话, 直接右键 run.sh 选择文件权限, 勾选上全部的执行

看你的服务器支持什么, 我这里用的crontab

crontab -e 编辑crontab 文件

在文件里最后一行添加如下

@reboot /path/to/your/script.sh

:wq 保存并退出

crontab -l 检查文件

sudo systemctl reboot 重启服务器