linux例行性工作排程crontab

时间:2023-01-15 07:57:34

linux例行性工作排程也就是定时任务

  • 工作排程方式
 - 定时任务(每天早上的定时闹钟)  - 突发任务(超市打折)
  • linux工作排程种类
 - at 是个可以处理仅执行一次就结束的指令(需要atd服务支援)  - crontab 这个指令所设定的工作将会循环一直进行下去(crontd服务)
  • 工作步骤

    at

1:先查找/etc/at.allow,只有写在这个文件中的用户才能使用该命令
2:如果/etc/at.allow不存在,查找/etc/at.deny,写在这个文件中的用户不能使用该命令
3:两个文件都不存在 只有root能使用改命令

crontab

1:先查找/etc/cron.allow不在这个文件的用户不能使用crontab
2: 再查找/etc/cron.deny,存在于该文件的用户不能使用crontab
使用crontab指令建立好工作排程后,该项记录就被记录到/var/spool/cron/里面
并且cron执行的每一项工作都会被记录到/var/log/cron

cron这个服务的最低侦测限制是分钟,所以cron才会每分钟读取一次
/etc/crontab与/var/spool/cron里面的数据内容

crond的配置文件:
1:/etc/crontab
2:/etc/cron.d/*
3:/var/spool/cron/*
使用场景:
1:个人化的行为使用:crontab -e 能保证自己的指令不被其他人看到
2:系统维护管理 vim /etc/crontab 能保证管理方便易追踪
3:自己开发 vim /etc/cron.d/newfile
4:固定特别工作:再上述提到的路径中写入指令即可
  • 移除下发的错误任务

    at

atq:查询目前主机上有多少个at工作排程
atrm:移除目前主机上的at工作排程

crontab

crontab -l:查看下发的工作排程
crontab -e:删除下发的排程
  • 可唤醒停机期间工作
anacron-------一个小程序并非一个服务
是为了处理费24小时一直启动的crontab的执行,以及因为某些原因导致超时时间而没有被执行的排程工作
原理:
crontab每小时执行一次anacron,然后anacron再去检测相关排程的任务有没有被执行
anacron读取的时间记录文件,分析现在时间也时间记录文件所记载的上次执行anacron的时间,比较是否有差异
配置文件放在:/etc/cron.hourly


工作流程:
1:由/etc/anacrontab 分析到cron.daily这项工作名称的天数为12:由/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳
3:对比上述时间,若相差一天,准备执行
4:若准备进行指令,根据/etc/anacrontab里面的START_HOURS-RANGE的设定,确定将要延迟的时间
5:延迟时间过后,开始执行,run-part /etc/cron.daily
  • crond与anacron
1:crond会主动读取/etc/crontab、/var/spool/cron/*、/etc/cron.d/*等配置文件,并根据设定的时间
设定工作排程
2:根据/etc/cron.d/0hourly ,设定 去/etc/cron.hourly/执行该目录的执行文件
3:根据/etc/cron.hourly/0anacron每小时执行anacron,并查看/etc/anacrontab
4:根据/etc/anacrontab的设定,分析/etc/cron.daily、/etc/cron.weekly、/etc/cron/monthly执行指令
  • 字段意义
分钟:0-59
小时:0-23
日期:1-31
月份:1-12
周:0-707都表示周末)
*:代表任何时刻
,:代表分割时间段
e.g:0 3,6 * * * command(3点和6点开始)
-:一段时间范围内
e.g:10 3-7 * * * command3 4 5 6 7点的每10分进行一次)
/n:代表每隔n单位间隔
e.g:*/5 * * * * command(每小时每隔5分执行一次)