一般来说 Linux 的计划任务大体分为两类,一类是在未来的某个时间一次性的执行某个任务,类似于定时炸弹,炸过一次就没有了。另一类是在未来的某个时间周期性的执行某个任务,这个就像闹钟,每天的早上在固定时间喊你起床。
对于一次性的任务来说, Linux 上主要使用 at , batch 来帮助实现,对于周期性的任务主要有cron , anacron 来实现,下面我们来一一介绍 一次性的计划任务命令 at , batch
at :
功能说明:在指定时间执行命令
语 法: at [-ldf]
-l 查看队列中等待执行的队列,相当于 atq
-d 删除等待执行的队列。相当于 atrm
-f 从文件输入将要执行的命令
Ctrl+d 退出
bash
不需要指定时间,而是自己在系统的使用率比较低的时间,让命令执行,其他和 at 命令相似
周期性命令 cron
周期性
cron 本身是一种服务,进程名叫 crond #service crond status
crontab 中保存用户定义的任务计划。分为两类:系统 crontab /etc/crontab
cron.daily ,
cron.hourly
cron.monthly,
cron.weekly
用户 crontab /var/spool/cron/USERNAME
crontab 文件格式 :
字段 取值
1.MIN 0-59
2.HOUR 0-23
3.DAY 1-31
4.MONTH 1-12
5.WEEK 0-7
6.COMMAND
*: 对应时间域上的所有有效取值
- :对应时间域上的连续时间取值 8-18
,:对应时间域上的离散时间取值 8 , 18
/ :对应时间域的每多久一次进行取值 */8 表示每 8 分钟一次,
周和日月,一般不同时使用。
anacrontab
cron 的 acl
/etc/cron.deny
/etc/cron.allow
如果两个文件都不存在,只有管理员才能定义任务计划
如果只有 cron.deny 。黑名单,仅拒绝列在 cron.deny 文件中的用户
如果只有 cron.allow 白名单 , 仅接受 allow 中的用户
如果两个都存在,此时 deny 被忽略,同只有 cron.allow