1.at (一次性执行)
1 2 3 4 5 6 |
#启动at service atd start #at的控制依靠以下2个文件 (系统默认是不存在这2个文件的) /etc/at.allow #用户白名单 /etc/at.denv #用户黑名单 |
2.crontab(重要)
启用crontab
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1、登录到root用户。 2、在root下输入:crontab -e 3、可能会提示你: no crontab for root - using an empty one 然后会叫你“Select a editor ......”下面有几个选项,就是叫你选择编辑器。(选vim.tiny) 或直接进入编辑页面。 4、进入crontab编辑页面之后就直接"shift+:",然后输入wq保存即可。然后一个新的crontab就生成了! |
1 |
crontab 服务默认启动,不需要你手动启动 |

用户白名单(/etc/cron.deny)
用户黑名单(/etc/cron.daily)
使用方法
1.命令自定义执行
1 2 3 4 |
crontab -e #编辑 crontab -l #查看 crontab -r #删除用户所有的crontab任务,如果有多个任务想删除还是用编辑模式crontab -e来操作 crontab -u #修改或删除其他用户的任务(只有root可用) |
1 2 3 4 5 6 7 8 9 |
* * * * * [执行的任务] 第1个* 一个小时中的第x分钟 [分] 范围[0-59] 第2个* 一天当中的第几个小时 [时] 范围[0-23] 第3个* 一个月当中的第几天 [天] 范围[1-31] 第4个* 一年当中的第几月 [月份] 范围[1-12] 第5个* 一周当中的星期几 [星期] 范围[0-7](0和7都代表的礼拜天周日) |
另外特殊符号:
1 2 3 4 5 6 7 |
特殊符号: * 代表任何时间 */n :代表每多少分钟执行一次 1,8,10 :逗号代表不连续的执行时间,比如 0,1,3 * * * * [命令] 代表在每天的凌晨0点,1点,3点执行 - :代表连续的时间范围,比如 0 7 * * 1-6 [命令] 代表在周一到周六的凌晨7点执行 crontab -e 保存后就自动开始执行了 |
2.修改配置文件(root)(一般这个比较常用)
1 |
vim /etc/crontab |

1 2 3 |
需求:2019年9月10日凌晨3点10分50秒 #注意这个需求无法写 因为:最小有效范围是分钟 ,最大有效时间是月 所以无法实现 |

1 2 3 4 5 6 |
这些文件夹里都有可执行文件,而且都会被anacron默认调用执行(旧版本是cron调用) 例如: cron.daily|cron.monthly|cron.weekly #每天,每月,每周执行,如果你有每周要执行的可执行脚本,直接拷贝进去就行 或者 你直接把定时任务写在配置文件中,这样做的好处是你可以自由控制时间 两种方法都行 |
anacron
他的作用是,如果我有个定时任务打算今天3点执行,但是恰好三点这个时间段我的机器宕机了,当我再开启机器只后,anacron会吧遗忘执行的 任务 重新补充执行掉
在 /var/spool/anacron下我们可看到 anacron三个文件

1 2 3 4 5 |
cron.daily cron.monthly cron.weekly 这三个里面的日期,记录我上次定时任务执行的时间(上次我daily目录下的定时任务文件什么时间执行的,上次我monthly这个目录下的定时任务文件什么时候执行的,上次我的这个weekly目录下的定时文件什么时候执行的) anacron会去读取这些文件中的时间,和当前时间做比较,若2个时间的差值超过了 anacron 的指定时间差值(一般是1天,7天或 1个月) 就说明有任务漏掉没有执行,这个时候anacron会介入执行没有执行的任务。从而保证因为关机,宕机,造成的漏掉的定时任务未执行的情况 |
anacron 的使用
1 2 3 4 |
anacron [选项] [工作名] -s :开始anacron工作,依据/etc/anacrontab 文件中设定的延迟时间执行 -n :立即执行 /etc/anacrontab 中的所有工作 ,忽略所有的延迟时间 -u :更新/var/spool/anacron/cron.{daily,monthly,weekly} 中的时间戳,但不执行任何工作 |
配置文件
1 2 |
/etc/anacrontab |

1 2 3 4 5 6 7 8 9 10 |
RANDOM_DELAY=45 #为了避免和cron.d里面的执行文件冲突,所以开机后这里的文件执行做了一个延迟,45的意思是,开机后最大延迟45分钟内执行以下需要执行的工作 START_HOURS_RANGE=3-22 #允许你执行的时间是 3点-22点 #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 开机后系统当前时间 和 /var/spool/anacron/cron.daily 时间一比较,发现超过1天了,然后强制延迟5分钟执行daily脚本,nice:让它恢复优先级,通过run-parts 来运行/etc/cron.daily的脚本 其他的周和月同理 |
anacrond 几乎不需要用户介入,也不需要你改。你要懂他的执行原理.
- 本文固定链接: https://www.yoyoask.com/?p=1528
- 转载请注明: shooter 于 SHOOTER 发表