centos重启jar包的shell脚本,并添加至定时任务

地方子公司按照业务新增需求后,SpringBoot框架开发修改完,将该项目打成jar包上线,每次都要java -jar命令运行多个jar包,非常繁琐,所以使用shell脚本进行启动停止重启操作。

我创建了一个名叫restart_jar.sh的文件,shell脚本如下

#!/bin/bash

usage="Usage: `basename $0` (start|stop|restart)"

start() {
    #注意jar的路径,写你自己的
    nohup java -server -Xms1g -Xmx1g -Xmn512m -XX:SurvivorRatio=8 -XX:-UseAdaptiveSizePolicy -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+UseParallelGC -XX:+UseParallelOldGC -jar /usr/download/intelligence.jar  >/dev/null 2>&1 &
}

stop() {
    #注意这里intelligence改为你自己需要停止的进程名称
    ps -ef | grep intelligence.jar | grep -v grep | awk '{print $2}' | xargs kill -9
}

restart() {
    stop
    start
}

case $1 in
  start)
     start
     ;;
  stop)
     stop
     ;;
  restart)
     restart
     ;;
  *)
     echo "Error command"
     echo "$usage"
     ;;
esac

使用方法:

给restart_jar.sh文件授权:chmod 744 restart_jar.sh
启动服务,在当前目录下执行:sh restart_jar.sh start
关闭服务,在当前目录下执行:sh restart_jar.sh stop
重启服务,在当前目录下执行:sh restart_jar.sh restart

脚本中子命令详解:

命令批量杀死进程,杀死进程名中含‘tomcat’字段的所有进程
ps -def |grep tomcat | grep -v grep | cut -c 9-15| xargs kill -9
ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | xargs kill -9
或者将需要杀死的进程号赋值给变量,再使用命令 kill -9 杀死他们
xxxpid=ps -ef |grep tomcat |grep -v grep|awk '{print $2}'
kill -9 $xxxpid
查出所有进程名字中含有“tomcat”字段的进程
ps -ef |grep tomcat
在列出的进程中去除含有关键字 grep 的进程
grep -v grep
从输出结果的每行字符串中截取第9-15个字符,拿到进程号
cut 9-15
表示输出第二列的进程PID
awk '{print $2}'
将前面提取到的所有的进程号,作为参数传给命令 kill -9,杀掉进程
xargs kill -9
使用spring boot 生成jar包,在服务器内存不大的情况下,使用Java -jar xxx.jar & 启动应用程序后,内存在不停的增长,解决办法是JVM 设置内存上限增加参数启动
nohup java -jar -server -Xms256m -Xmx1024m xxx.jar
nohup后台启动时不需要输出启动信息和错误信息到任何地方
>/dev/null 2>&1
(默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”,不增加这条指令启动时会在我们启动目录下增加一个nohup.out文件)

添加至定时任务:

如果白天保证业务正常运行,不能停服务器,需要半夜重启服务,可添加至定时任务处理。

使用crontab -e命令编辑定时任务

配置相关说明:
用户的定时任务分6段, 分别是:分,时,日,月,周,执行的命令

第1列表示分钟1~59 (每分钟用*或者 */1表示)
第2列表示小时1~23 (0表示0点)
第3列表示日期1~31 (具体哪一天)
第4列表示月份1~12 (具体哪一月)
第5列标识号星期0~6 (0表示星期天,依此类推)
第6列要执行命令
*:表示任意时间都,实际上就是“每”的意思。可以代表00-23小时或者00-12每月或者00-59分;
-:表示区间,是一个范围,例如:30 11-12 * * * cmd,就是每天11点半、12点半执行命令;
,:是分割时段,例如:30 7,9,18 * * * cmd,就是每天7点、9点和18点的30分时执行命令;
/n:表示分割,可以看成除法,*/5 * * * * cmd,每隔五分钟执行一次命令;

编辑保存后使用crontab -l查看添加的任务
添加定时任务提示权限不够

在这里插入图片描述
进入/var/spool/cron/地址去除root的ia属性,再次编辑即可保存成功
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值