在Linux中使用crontab

  • 在Linux中使用crontab已关闭评论
  • 28 次浏览
  • A+
所属分类:linux技术
摘要

查看crontab 输入命令:cat /etc/crontab在设定编辑之前都建议列出服务查看一下:crontab -l


查看已存在的任务

查看crontab 输入命令:cat /etc/crontab

在设定编辑之前都建议列出服务查看一下:crontab -l

在Linux中使用crontab

 语法:

**** 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