linux java 应用自动启动

28 阅读1分钟

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