查看已存在的任务
查看crontab 输入命令:cat /etc/crontab
在设定编辑之前都建议列出服务查看一下:crontab -l
语法:
**** user_name command to be executed
- 前面五位是定时执行的时间周期 说明如下:
第一个 * 表示分钟:取值范围 0-59
第二个 * 表示小时:取值范围 0-23
第三个 * 表示天数:取值范围 1-31
第四个 * 表示月份:取值范围 1-12
第五个 * 表示每周:取值范围 0-6
user_name
表示执行定时任务的用户 不指定默认当前用户command to be executed
表示要执行的脚本语句。- 组合用法
使用(-)可以划定范围,如:0 0-3 * * * 脚本 表示每天0-3点整执行脚本 使用(,)可以枚举时间,如: 0,15,30,45 * * * * 脚本 表示每个小时的0分,15分,45分,30分会执行脚本 使用(/)可以指定间隔,如:* */8 * * * 脚本 表示每8小时执行脚本 组合用法,0-20/10 * * * * 脚本 表示在前20分钟内每隔10分钟执行脚本 本人的一个定时脚本语句,5 20 * * * /usr/local/bin/kubectl rollout restart deployment identity-deployment 每天20点5分重启k3s服务
- 示例:
使用(-)可以划定范围:0 0-3 * * * 脚本 表示每天0-3点整执行脚本 使用(,)可以枚举时间: 0,15,30,45 * * * * 脚本 表示每个小时的0分,15分,45分,30分会执行脚本 使用(/)可以指定间隔:* */8 * * * 脚本 表示每8小时执行脚本 组合用法:0-20/10 * * * * 脚本 表示在前20分钟内每隔10分钟执行脚本 每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 * ? 每月最后一天23点执行一次:0 0 23 L * ? 每周星期天凌晨1点实行一次:0 0 1 ? * L 在26分、29分、33分执行一次:0 26,29,33 * * * ? 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
步骤:
方法一:
# touch crontab.txt # 将上面的cron job 复制到 crontab.txt 保存 # 让crontab生效:crontab /xxx/crontab.txt # 重启crond
方法二:
# 直接 crontab -e 编辑crontab # 按 i 进入编辑 # 将上面的cron job复制 # Esc 退出 # :wq 或 shift + zz # 重启crond
常用命令:
crontab -u //设定特定用户的定时服务 crontab -l //列出当前用户定时服务内容 crontab -r //删除当前用户的定时服务 crontab -e //编辑当前用户的定时服务 /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 /sbin/service crond status //查看crond状态 你也可以将这个服务在系统启动的时候自动启动: 在/etc/rc.d/rc.local这个脚本的末尾加上: /sbin/service crond start 查看cron执行日志:cat /var/log/cron
- 如果最后带^M 则需要设置一下编码
vi crontab.txt
:set ff=unix
注意:
1.crontab.txt中的内容最后一行需要换行,因为crontab.txt中的内容是通过outputstream写入的
2.java和linux系统级的区别
# Java的Quartz任务(有秒) 0 1 20 * * ? /usr/local/bin/kubectl rollout restart deployment basedata-deployment # linux系统的crontab(没有秒) 1 20 * * * /usr/local/bin/kubectl rollout restart deployment basedata-deployment