linux 设置定时重启jar后台和其他应用

linux定时器选择

linux常见有两种定时器 : 一种是crontab ,一种是at 命令, 因为我用的是crontab, 所以我重点讲crontab的用法。

crontab

  1. 检查是否你的操作系统已经安装了crontab
  2. rpm -qa | grep crontab
    在这里插入图片描述
    图片上这样就说明已经安装好了 PS:因为我已经下载过了

如果没有安装

分别执行

 yum -y install vixie-cron
 yum -y install crontabs

分别说明一下:

vixie-cron 是 cron 的主程序;
crontabs 是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

安装好了–启动和配置服务

手动方式
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态

在这里插入图片描述

图片这样说明已经在运行了 同样可以设置开机自启动:

   chkconfig --level 345 crond on

在这里插入图片描述
这样就已经设置好了OK了

crontab文件格式:

在这里插入图片描述

特殊字符:
星号(*):代表’‘每’'的意思,例如month字段如果是星号,则表示每月都执行该命令。
逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。
中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次

实现场景

  1. 我本地是每3个小时要重启一次java后台
  2. 因为jar包我已经用shell脚本启动的,所以我定时器只需要指定shell的路径就好了。

看本地定时任务

  crontab -l

在这里插入图片描述>添加或修改定时任务

crontab -e

在这里插入图片描述
#21点30重启后台服务器

 30 21 * * *  /home/xxx/restartBackend.sh > /dev/null 2>&1

#每3个小时重启后台服务器

0 */3 * * *  /home/xxx/start.sh >> /home/xx/backend/nohup.out 2>&1 &

重启的时间 : 30 21 * * *
指定文档或者应用的地址 : /home/xxx/restartBackend.sh
重定向输出符号 :使用 > 执行命令时,每次都会新生成一个 > 后面的文件,将之前生成的文件替换掉(文件创建时间也会跟着改变)。
使用 >> 向 文件 中追加 当前日期
/dev/null 表示空设备文件 是个类似垃圾的地方。联合起来就是将ls的输出丢弃到垃圾中
/home/xx/backend/nohup.out 是我java日志输出的文件地址
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误

有一个文章对于 2>&1 , 2>&1 &解释的还不错
侃豺小哥

操作到这里差不多就完成

但是问题还是很多的
到了点还是没有重启 然后开始检测 是不是shell脚本 写错了 发现脚本可以直接 ./xxxx.sh正常运行说明脚本问题不是很大
然后直接重新打印日志看看是什么样子的错误

0 */3 * * *  /home/xxx/start.sh >> /home/workshop/mylog.log 2>&1 &

在这里插入图片描述分析一下报错日志 还是脚本西错了
首先第一行就报错了 说 这样的文件或目录
#!/usr/bin/sh
检查之后才发现自己写错了脚本运行 改成

#!/usr/bin/sh

然后看第二个错误 说执行不了java 然后排查问题发现shell脚本指定的jar 没有给够权限
在这里插入图片描述
把权限扩大最高还是一样的报错 然后继续找解决方案
发现有可能是环境变量没有弄好 检查发现java环境也是OK的
然后看到一个博主说要在脚本里面加上 source /etc/profile 然后就可以启动了
在这里插入图片描述
完整的脚本 记录一下 因为定时重启还是经常使用操作的

7.26
最近要备份数据库的某一个表的数据 每天凌晨3点执行 ,保存最近7天的文件
在这里插入图片描述

#! /bin/bash
#备份数据库当前年月日时间命名
/usr/bin/mysqldump -uroot -p123456 icock user > /home/workshop/dbBackup/win_tables/user_table_`date +%Y-%m-%d`.sql
#查找备份目录下文件名字只保留最近7天的数据
find /home/workshop/dbBackup/user_tables -type f -mtime +7 -exec rm -f {
    
    } \;

在这里插入图片描述
在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_42862247/article/details/117982057