linux crontab命令简易实践,帮你快速搞定定时任务

一、crond简介

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

/var/spool/cron/为所有用户crontab文件存放的目录,以用户名命名

[root@DG_TZJY ~]# ls /var/spool/cron
oracle  root

二、crontab查看和编辑命令

1.查看定时任务命令:crontab [-u user] [ -l ]
# 查看 oracle 用户下的定时任务(同cat /var/spool/cron/oracle)
[root@DG_TZJY ~]# crontab -u oracle -l
0 6 * * * sh /home/oracle/dgmonitor/adg_check.sh

# 查看 root 用户下的定时任务(同cat /var/spool/cron/root)
[root@DG_TZJY ~]# crontab -u root -l
01 08 * * * /home/oracle/dgmonitor/monitor-dataguard.sh
59 * * * * /home/oracle/delete_arch/delete_arch.sh

44 */2 * * * /bin/bash /etc/titanagent/agent_update.sh >> /var/log/titanagent/check.o.log 2>> /var/log/titanagent/check.e.log
*/2 * * * * /bin/bash /etc/titanagent/agent_update_exception.sh >> /var/log/titanagent/check.o.log 2>> /var/log/titanagent/check.e.log
*/2 * * * * /bin/bash /etc/titanagent/agent_monitor.sh >> /var/log/titanagent/edog.o.log 2>> /var/log/titanagent/edog.e.log

# 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置
# 时间命令格式如下
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
2.编辑定时任务命令:crontab [-u user] [ -e ]
# 编辑oracle 用户下的定时任务
[root@DG_TZJY ~]# crontab -u oracle -e

#crontab -e #编辑cron任务模式
#i #默认文字编辑器为vim,按i字母键即可添加cron任务
#ESC #按ESC键退出编辑模式
#:wq #键入:wq保存

举例说明一下定时任务:

        每周定时执行一次        0 0 * * 0
        每月定时执行一次        0 0 1 * *
        每月最后一天定时执行一次    0 0 L * *
        每年定时执行一次        0 0 1 1 *

3.crontab默认调度任务

cron默认配置了调度任务,分别为:hourly、daily、weekly、mouthly,默认配置文件为/etc/anacrontab,将需要执行的脚本放到相应的目录下即可,目录分别为:/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/ect/cron.mouthly

这个方法比较简便,适用于对具体执行时间没有要求的场景。但是可能也有朋友会好奇任务执行的具体时间,我们一起来看下/etc/anacrontab文件

[root@DG_TZJY ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 最大随机廷迟
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45

# anacron的执行时间范围是3:00~22:00
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#每天开机 5 分钟后就检查 /etc/cron.daily 目录内的文件是否被执行,如果今天没有被执行,那就执行
#每隔 7 天开机后 25 分钟检查 /etc/cron.weekly 目录内的文件是否被执行,如果一周内没有被执行,就会执行
#每隔一个月开机后 45 分钟检查 /etc/cron.monthly 目录内的文件是否被执行,如果一个月内没有被执行,那就执行
#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily 
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

我们用 cron.daily 工作来说明一下 /etc/anacrontab 的执行过程:

        1、读取 /var/spool/anacron/cron.daily 文件中 anacron 上一次执行的时间。
        2、和当前时间比较,如果两个时间的差值超过 1 天,就执行 cron.daily 工作。
        3、只能在 03:00-22:00 执行这个工作(此时间可配置)。
        4、执行工作时强制延迟时间为 5 分钟,再随机延迟 0~45 分钟(此时间可配置)。

在这个文件中,“RANDOM_DELAY”定义的是最大随机延迟,也就是说,cron.daily 工作如果超过 1 天没有执行,则并不会马上执行,而是先延迟强制延迟时间,再延迟随机延迟时间,之后再执行命令;“START_HOURS_RANGE”的是定义 anacron 执行时间范围,anacron 只会在3-22点范围内执行。

4.Crontab日志路径

/var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息则linux会每次都发邮件到该用户下。

[root@DG_TZJY ~]# ll /var/log/cron* 
5.crontab在线工具

crontab执行时间计算 - 在线工具

在工具中提交CRON表达式可以计算并展示出接下来7次的执行时间,帮助你判断表达式是否正确。同时也有更为丰富和灵活的非标准表达式等你去探索。

版权声明
版权声明:
本文参考了CSDN博主「桃仙人」的原创文章, 原文链接:
https://blog.csdn.net/dongkang123456/article/details/129228462
 
本文参考了博主「天乐博客」的原创文章, 原文链接:
https://blog.361s.cn/107.html
  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮猴的路数

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值