一、crond简介
crond是linux下拿来周期性的执行某种任务或等待处理个别风波的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,而且会手动启动crond进程,crond进程每分钟会定期检测是否有要执行的任务kali linux,假如有要执行的任务,则手动执行该任务。
/var/spool/cron/为所有用户crontab文件储存的目录,以用户名命名
[root@DG_TZJY ~]# ls /var/spool/cron
oracle root
二、crontab查看和编辑1.查看定时任务:crontab[-uuser][-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[-uuser][-e]
# 编辑oracle 用户下的定时任务
[root@DG_TZJY ~]# crontab -u oracle -e
#crontab -e #编辑cron任务模式
#i #默认文字编辑器为vim,按i字母键即可添加cron任务
#ESC #按ESC键退出编辑模式
#:wq #键入:wq保存
举例说明一下定时任务:
每周定时执行一次00**0
每月定时执行一次001**
每月最后三天定时执行一次00L**
每年定时执行一次0011*
3.crontab默认调度任务
cron默认配置了调度任务,分别为:hourly、daily、weekly、mouthly,默认配置文件为/etc/anacrontab,将须要执行的放在相应的目录下即可,目录分别为:/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/ect/cron.mouthly
这个方式比较简便linux服务器代维,适用于对具体执行时间没有要求的场景。并且可能也有同学会好奇任务执行的具体时间,我们一上去看下/etc/anacrontab文件
[root@DG_TZJY ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
=/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天linux查看所有用户的crontab,就执行cron.daily工作。
3、只能在03:00-22:00执行这个工作(此时间可配置)。
4、执行工作时强制延后时间为5分钟,再随机延后0~45分钟(此时间可配置)。
在这个文件中,“RANDOM_DELAY”定义的是最大随机延后,也就是说linux查看所有用户的crontab,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次的执行时间,帮助你判定表达式是否正确。同时也有更为丰富和灵活的非标准表达式等你去探求。
本文原创地址://lrxjmw.cn/cssmrhzkhbjc.html编辑:刘遄,审核员:暂无