在Linux上,你可以使用systemd
来创建一个自动重启jar
包的脚本。
首先,创建一个脚本文件,例如restart_script.sh
,并在文件中添加以下代码:
#!/bin/bash
SERVICE_NAME="my-jar-file.jar" # 替换成你的jar包文件名
PATH_TO_JAR="/path/to/jar" # 替换成你的jar包所在的路径
PID_PATH="/var/run/my-jar-file.pid" # 替换成你的pid文件路径
case "$1" in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH ]; then
nohup java -jar $PATH_TO_JAR/$SERVICE_NAME >> /dev/null 2>&1&
echo $! > $PID_PATH
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is already running ..."
fi
;;
stop)
if [ -f $PID_PATH ]; then
PID=$(cat $PID_PATH);
echo "$SERVICE_NAME stopping ..."
kill $PID;
echo "$SERVICE_NAME stopped ..."
rm $PID_PATH
else
echo "$SERVICE_NAME is not running ..."
fi
;;
restart)
if [ -f $PID_PATH ]; then
PID=$(cat $PID_PATH);
echo "$SERVICE_NAME stopping ..."
kill $PID;
echo "$SERVICE_NAME stopped ..."
rm $PID_PATH
echo "$SERVICE_NAME starting ..."
nohup java -jar $PATH_TO_JAR/$SERVICE_NAME >> /dev/null 2>&1&
echo $! > $PID_PATH
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
esac
将上述脚本中的my-jar-file.jar
替换为你的jar
包文件名,将/path/to/jar
替换为你的jar
包所在的路径,将/var/run/my-jar-file.pid
替换为你的pid
文件路径。
接下来,将脚本文件设置为可执行:
chmod +x restart_script.sh
然后,创建一个systemd
服务文件,例如restart_script.service
,并在文件中添加以下内容:
[Unit]
Description=Restart Script
[Service]
ExecStart=/path/to/restart_script.sh start
ExecStop=/path/to/restart_script.sh stop
ExecReload=/path/to/restart_script.sh restart
User=root
Group=root
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
将上述文件中的/path/to/restart_script.sh
替换为脚本文件的路径。
将该服务文件复制到/etc/systemd/system/
目录下:
sudo cp restart_script.service /etc/systemd/system/
然后,启动服务并设置开机自启动:
sudo systemctl start restart_script
sudo systemctl enable restart_script
这样,当系统启动时,jar
包将会自动启动,并且在发生异常退出时会自动重新启动。你也可以使用以下命令手动启动、停止和重启服务:
sudo systemctl start restart_script
sudo systemctl stop restart_script
sudo systemctl restart restart_script