计划任务种类:
- 一次性计划任务(at):由进程atd守护
- 周期性计划任务(cron):由进程crond守护
一次性计划任务(at)
生成的文件存放在/var/spool/at/目录下,任务执行一次之后自动删除。一次性计划任务还可以用batch命令去执行。batch命令会在系统空闲的情况下执行任务,用法和at相同但优先级低延时执行。
命令:
1 | [root@localhost ~]# at now + 5 minutes |
一次性计划任务的时间写法支持很多可以查看man page!当我们制定计划任务之后,由于种种原因而要去取消计划任务我们可以使用atq去查询当前系统中有多少为执行的计划,每个计划的编号是多少。在通过atrm+任务编号来删除这个任务。/etc/at.allow和/etc/at.deny文件规范了哪些用户可以使用at那些用户无法使用at。写在allow文件表明了写在此文件中的用户才可以使用at,deny文件中的用户无法使用。
周期性计划任务(cron)
由进程crond守护,生成的任务文件存放在/var/spool/cron/目录下文件会以用户名命名。也采用了/etc/cron.allow和/etc/cron.deny的授权方式。配置文件为/etc/crontab 。周期性计划任务分为两种,一种是用户级别(通过crontab -e来制定),一种为系统级别(写在/etc/crontab文件中),建议使用crontab来制定。
命令用法
1 | crontab 参数 |
例:
1 | ###时间的写法基本就是"," "-" "/"三种符号来间隔,“*”代表所有都匹配。 |
同样的/etc/crontab 中的时间写法也是类似但语法不同
cron每分钟都会去读一次计划任务同时也会读一次/etc/crontab文件,crontab文件中设置了4个文件夹(配置文件中的run-parts
命令部分),系统会在不同的时间去读取运行其中的文件,我们可以将脚本文件放到对应的文件夹下也可以实现脚本的周期性执行。我们的locate数据库同步,logrotate等都是放在这些目录下来实现周期性的工作。
1 | [root@localhost ~]# cat /etc/crontab |