1.使用开机启动服务
脚本startJar.sh
#!/bin/bash
JAR_NAME="feng-boot.jar"
SERVER_DIR="/home/feng"
JAVA_HOME="/usr/local/java-1.8.0-openjdk"
JAVA_CMD="$JAVA_HOME/bin/java"
LOG_PATH="/usr/local/startJar.log"
start_jar() {
cd $SERVER_DIR
nohup $JAVA_CMD -jar $SERVER_DIR/$JAR_NAME >> /dev/nul 2>&1 &
echo "start $SERVER_DIR/$JAR_NAME" >> $LOG_PATH
}
monitor_jar() {
local jar_pid=$(pgrep -f "$JAR_NAME")
if [[ -z "$jar_pid" ]]; then
echo "starting $SERVER_DIR/$JAR_NAME" >> $LOG_PATH
start_jar
else
echo "$SERVER_DIR/$JAR_NAME is running with PID $jar_pid" >> $LOG_PATH
fi
}
while true; do
monitor_jar
sleep 10
done
2.使用cron定时任务
脚本cronStartJar.sh
#!/bin/bash
JAR_NAME="feng-boot.jar"
SERVER_DIR="/home/feng"
JAVA_HOME="/usr/local/java-1.8.0-openjdk"
JAVA_CMD="$JAVA_HOME/bin/java"
LOG_PATH="/usr/local/cronStartJar.log"
start_jar() {
cd $SERVER_DIR
nohup $JAVA_CMD -jar $SERVER_DIR/$JAR_NAME >> /dev/nul 2>&1 &
echo "start $SERVER_DIR/$JAR_NAME" >> $LOG_PATH
}
for i in {1..5}; do
echo $i
jar_pid=$(pgrep -f "$JAR_NAME")
echo $jar_pid
if [[ -z "$jar_pid" ]]; then
echo "starting $SERVER_DIR/$JAR_NAME" >> $LOG_PATH
start_jar
else
echo "$JAR_NAME is running with PID $jar_pid" >> $LOG_PATH
fi
sleep 10
done
设置定时任务
crontab -e
* * * * * /usr/local/cronRun.sh > /dev/null