1. shell脚本如下


#!/bin/sh 
export JAVA_HOME=/opt/module/jdk1.8.0_201
export JRE_HOME=/$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

# 这里可替换为你自己的执行程序,其他只需要看下相应文件所在目录,修改为自己的即可
APP_NAME=xxx.jar
#使用说明,在为输入任何参数是调用,根据输入参数执行相应方法
usage() {
    echo "Usage: sh restart-springboot.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
#grep -v反选匹配 awk指定文件某一行 awk工具使用可以查看其它相关文章
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
  #如果不存在返回1,存在返回0    
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法 因为后面会加入定时任务执行,所以将日志打印到日志文件中,记录相应的时间
start(){
  is_exist
  if [ $? -eq 0 ]; then
    echo "${APP_NAME} is already running. pid=${pid}"
   echo "执行启动方法,${JAR_NAME} is already  running $(date +%Y-%m-%d\ %H:%M:%S)" >> /data4/download/service/restart.log
  else
# nohub 后台执行,并将日志输入到 nohub.out中 2>&1 代表将标准输出和错误输出合并
    nohup java -jar /data4/download/service/${APP_NAME} >/data4/download/service/nohup.out  2>&1  &
   echo "执行启动方法,${JAR_NAME} successed $(date +%Y-%m-%d\ %H:%M:%S)" >> /data4/download/service/restart.log

  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
    echo "执行停止方法,${APP_NAME} is process stop $(date +%Y-%m-%d\ %H:%M:%S)" >> /data4/download/service/restart.log
  else
    echo "执行停止方法,${JAR_NAME} is not running $(date +%Y-%m-%d\ %H:%M:%S)" >> /data4/download/service/restart.log

  fi
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  sleep 5
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

2. 将该脚本添加到定时任务中

# crontab 规则与java cron规则一只,不过参数更少,最小单位为分钟,最大到月,只有五位数
crontab -l # 查看
crontab -e # 编辑 规则与vim一致 

# 我的定时任务如下

# 每天 1,13:45 启动springboot下载文件 4,16点30分关闭 15点为测试使用,正式启动会删除
45 1,13,15 * * * bash /data4/download/service/restart_server.sh start

30 4,16 * * * bash /data4/download/service/restart_server.sh stop
# 注意上述时间是linux本地时间,使用date查看,因为可能因为时区等问题造成时间不一致

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐