当前位置:   article > 正文

监听服务器jar运行,及重启脚本_jar重启脚本

jar重启脚本

1、简单监听服务并重启脚本

业务需求,服务器要监听停止的jar服务,十分钟一次监听,出现停止就重启服务

  1. #!/bin/bash
  2. # “#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
  3. # 变量
  4. jarName=quartz_cgq_5501.jar
  5. jarName_TWO=quartz_cgq_5506.jar
  6. jarName_THREE=suoxin_quartz_cgq_5503.jar
  7. #配置服务日志文件目录路径
  8. LOG_FILE=/usr/local/kuangshan/jiaoben/quartz_cgq_5501.log
  9. LOG_FILE_TWO=/usr/local/kuangshan/jiaoben/quartz_cgq_5506.log
  10. LOG_FILE_THREE=/usr/local/kuangshan/jiaoben/suoxin_quartz_cgq_5503.log
  11. jarUrl=/usr/local/kuangshan/
  12. #webUrl=https://www.baidu.com/
  13. # grep -v grep: 在文档中过滤掉包含有grep字符的行
  14. # awk '{print $2}': 按空格截取第二个
  15. #pid=`ps -ef|grep $jarName |grep -v grep| awk '{print $2}'`
  16. # wc -l: jar包进程的数量
  17. num=`ps -ef|grep $jarName |grep -v grep| awk '{print $2}'| wc -l`
  18. MonitorFunction(){
  19. # 输出文本
  20. echo "[info]进入监控脚本"`date +'%Y-%m-%d %H:%M:%S'`
  21. # -eq: 等于
  22. if [[ $num -eq 0 ]]; then
  23. echo "[error]进程一,不存在,重启"`date +'%Y-%m-%d %H:%M:%S'`
  24. nohup java -jar $jarUrl/$jarName > $LOG_FILE 2>&1 &
  25. else
  26. echo "[info]页面一,存在不用重启,time="`date +'%Y-%m-%d %H:%M:%S'`
  27. fi
  28. }
  29. MonitorFunction
  30. numTwo=`ps -ef|grep $jarName_TWO |grep -v grep| awk '{print $2}'| wc -l`
  31. MonitorFunctionTwo(){
  32. # 输出文本
  33. echo "[info]进入监控脚本二"`date +'%Y-%m-%d %H:%M:%S'`
  34. # -eq: 等于
  35. if [[ $numTwo -eq 0 ]]; then
  36. echo "[error]进程二,不存在,重启"`date +'%Y-%m-%d %H:%M:%S'`
  37. # >> /dev/null : jar包生成日志不打印到此脚本日志中
  38. nohup java -jar $jarUrl/$jarName_TWO > $LOG_FILE_TWO 2>&1 &
  39. else
  40. echo "[info]页面二,存在不用重启,time="`date +'%Y-%m-%d %H:%M:%S'`
  41. fi
  42. }
  43. MonitorFunctionTwo
  44. numThree=`ps -ef|grep $jarName_THREE |grep -v grep| awk '{print $2}'| wc -l`
  45. MonitorFunctionThree(){
  46. # 输出文本
  47. echo "[info]进入监控脚本三"`date +'%Y-%m-%d %H:%M:%S'`
  48. # -eq: 等于
  49. if [[ $numThree -eq 0 ]]; then
  50. echo "[error]进程三,不存在,重启"`date +'%Y-%m-%d %H:%M:%S'`
  51. # >> /dev/null : jar包生成日志不打印到此脚本日志中
  52. nohup java -jar $jarUrl/$jarName_THREE > $LOG_FILE_THREE 2>&1 &
  53. else
  54. echo "[info]页面三存在不用重启,time="`date +'%Y-%m-%d %H:%M:%S'`
  55. fi
  56. }
  57. MonitorFunctionThree

2、凌晨重启jar服务脚本

  1. #!/bin/bash
  2. #执行bash shell配置
  3. source ~/.bash_profile
  4. #配置服务jar包文件路径
  5. SERVICE_NAME=/usr/local/kuangshan/quartz_cgq_5501.jar
  6. SERVICE_NAME_TWO=/usr/local/kuangshan/quartz_cgq_5506.jar
  7. SERVICE_NAME_THREE=/usr/local/kuangshan/suoxin_quartz_cgq_5503.jar
  8. #配置服务日志文件目录路径
  9. LOG_FILE=/usr/local/kuangshan/jiaoben/quartz_cgq_5501.log
  10. LOG_FILE_TWO=/usr/local/kuangshan/jiaoben/quartz_cgq_5506.log
  11. LOG_FILE_THREE=/usr/local/kuangshan/jiaoben/suoxin_quartz_cgq_5503.log
  12. #杀死指定jar包进程
  13. ps -ef|grep $SERVICE_NAME |grep -v grep|cut -c 9-15|xargs kill -9
  14. ps -ef|grep $SERVICE_NAME_TWO |grep -v grep|cut -c 9-15|xargs kill -9
  15. ps -ef|grep $SERVICE_NAME_THREE |grep -v grep|cut -c 9-15|xargs kill -9
  16. #启动jar包
  17. nohup java -jar -Xmx10240m -Xms10240m -Xss2m $SERVICE_NAME > $LOG_FILE 2>&1 &
  18. nohup java -jar -Xmx10240m -Xms10240m -Xss2m $SERVICE_NAME_TWO > $LOG_FILE_TWO 2>&1 &
  19. nohup java -jar -Xmx10240m -Xms10240m -Xss2m $SERVICE_NAME_THREE > $LOG_FILE_THREE 2>&1 &
  20. echo "服务重启时间:"`date`>>restart.out

直线下面脚本,直接重启目标的jar包 

#!/bin/bash
# “#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
# 变量
LOG_FILE=/usr/local/kuangshan/bskuangshan/bs_cgq_6805_listen_6806.log
fileName='博盛传感器'
jarName=bs_cgq_6805_listen_6806.jar
jarUrlOne=/usr/local/kuangshan/bskuangshan
# grep -v grep: 在文档中过滤掉包含有grep字符的行
num=`ps -ef|grep $jarName |grep -v grep| awk '{print $2}'| wc -l`
 # 输出文本
    echo "[info]进入监控脚本"`date +'%Y-%m-%d %H:%M:%S'`
    # -eq: 等于
    if [[ $num -eq 0 ]]; then
        echo "[info]进程"+$fileName+">>>>不存在<<<<<重启"`date +'%Y-%m-%d %H:%M:%S'`
        nohup java -jar  $jarUrlOne/$jarName > $LOG_FILE 2>&1 &
    else
        echo "[info]进程"+$fileName+"正在杀死,time="`date +'%Y-%m-%d %H:%M:%S'`
        ps -ef|grep $jarName |grep -v grep|cut -c 9-15|xargs kill -9
        nohup java -jar  $jarUrlOne/$jarName > $LOG_FILE 2>&1 &
        echo "[info]进程"+$fileName+"重启完毕,time="`date +'%Y-%m-%d %H:%M:%S'`
    fi

 3、先测试脚本是否能运行

给脚本赋权

chmod a+x monitor.sh

运行脚本文件 

sh monitor.sh

如果出现下面错误,则输入命令,转化为unix格式

sed -i 's/\r//' monitor.sh

3、使用crontab的定时任务

crontab -e

  0 0 * * *表示凌晨执行 

  */10 * * * * 表示十分钟执行一次

0 0 * * * bash /usr/local/kuangshan/jiaoben/springStart.sh >> /usr/local/kuangshan/jiaoben/log.log
*/10 * * * * bash /usr/local/kuangshan/jiaoben/monitor.sh >> /usr/local/kuangshan/jiaoben/logTWO.log

或者

vim /etc/crontab  

查看编辑的定时任务 

 crontab -l

crontab在线输出小工具

crontab不执行排查方法

4、重启文件夹下所有jar包脚本

#!/bin/bash
yy=$(ls **.jar)
for m in $yy; do
    echo $m
    numThree=$(ps -ef | grep $m | grep -v grep | awk '{print $2}' | wc -l)
    echo “进程值为=”$numThree
    if [[ $numThree -eq 0 ]]; then
        echo "-----" $m"-----进程不存在******重启中.......*****,time="$(date +'%Y-%m-%d %H:%M:%S')
        nohup java -jar $m >$m".log" 2>&1 &
    else
        echo "-----" $m"-----进程存在******不用重启*****,time="$(date +'%Y-%m-%d %H:%M:%S')
    fi
done

5、mongdb启动停止脚本 

#!/bin/bash
case $1 in
"start" ){

/kkb/install/mongodb-linux-x86_64-4.0.18/bin/mongod -f /kkb/install/mongodb-linux-x86_64-4.0.18/conf/mongo.conf
echo "start mongo..."
ps -ef | grep momgodb

};;
"stop"){

/kkb/install/mongodb-linux-x86_64-4.0.18/bin/mongod --shutdown -f /kkb/install/mongodb-linux-x86_64-4.0.18/conf/mongo.conf
echo "stop mongo..."
ps -ef | grep momgodb
};;
esac

6、重启jar包脚本start.sh

sh start.sh:查看和start.sh 同目录的jar情况,如果没有进程则启动jar包

sh start.sh ***.jar 重启jar包,如果jar进程不存在则启动,如果存在则杀死进程再启动

#!/bin/bash
DB_NAME=$1
if [ -z "$DB_NAME" ]
then
    yy=$(ls **.jar)
    for m in $yy; do
        echo $m
        numThree=$(ps -ef | grep $m | grep -v grep | awk '{print $2}' | wc -l)
        echo “进程值为=”$numThree
        if [[ $numThree -eq 0 ]]; then
            echo "-----" $m"-----进程不存在******重启中.......*****,time="$(date +'%Y-%m-%d %H:%M:%S')
            nohup java -jar $m >$m".log" 2>&1 &
            echo "-----" $m"-----进程单独******重启完毕.......*****,time="$(date +'%Y-%m-%d %H:%M:%S')
        else
            echo "-----" $m"-----进程存在******不用重启*****,time="$(date +'%Y-%m-%d %H:%M:%S')
        fi
    done
else
    numFour=$(ps -ef | grep $1 | grep -v grep | awk '{print $2}' | wc -l)
    echo “进程值为=”$numFour
    if [[ $numFour -eq 0 ]]; then
        echo "-----" $DB_NAME"-----进程单独******重启中.......*****,time="$(date +'%Y-%m-%d %H:%M:%S')
        nohup java -jar $DB_NAME >$DB_NAME".log" 2>&1 &
        echo "-----" $DB_NAME"-----进程单独******重启完毕.......*****,time="$(date +'%Y-%m-%d %H:%M:%S')
    else
                    pid=`ps -ef | grep $DB_NAME | grep -v "grep" | awk '{print $2}' `
        echo “进程为=”$DB_NAME
                    echo “进程ID值为=”$pid
                                echo “进字符串长度为=”${#pid[0]}
                                yy=($pid)
                               pidnew=${yy[0]}
                               echo “截取第一个进程为:“$pidnew
        echo "-----" $DB_NAME"-----正在杀死进程******中.......*****,time="$(date +'%Y-%m-%d %H:%M:%S')
        # ps -ef|grep $DB_NAME |grep -v grep|cut -c 9-15|xargs kill -9
        kill -9 $pidnew
        echo "-----" $DB_NAME"-----进程单独******重启中.......*****,time="$(date +'%Y-%m-%d %H:%M:%S')
        nohup java -jar $DB_NAME >$DB_NAME".log" 2>&1 &
        echo "-----" $DB_NAME"-----进程单独******重启完毕.......*****,time="$(date +'%Y-%m-%d %H:%M:%S')
                                ps aux|grep $DB_NAME
    fi

    fi
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/85755
推荐阅读
相关标签
  

闽ICP备14008679号