1.Linux下的例行性工作有两种:
a)单一执行的例行性工作,也就是仅执行一次就可以了——at方式
b)循环执行的例行性工作,每隔一定的周期执行一次
2.at方式的例行性任务的调度是由atd服务来控制的,所以atd服务如果默认开启的话,要用/etc/init.d/atd restart来开启atd服务;crontab方式的例行性任务的调度是由crond服务来控制的,所以crond服务默认没有开启的话,要用/etc/init.d/crond restart来开启crond服务。
3.单一执行的例行性工作——at方式
(1)atd的安全控制
atd服务使用at.allow和at.deny两个文件来进行at的安全控制。在at.allow中配置的账户,或者不在at.dely中配置的用户才可以使用atd服务。
(2)使用方法:
a)at [-mldv] TIME:设定一个例行性工作
b)at -c 工作号码:查看指定号码的工作内容
c)atq:相当于at -l,查看当前系统中有多少的at例行性工作
d)atrm 工作号码:相当于at -d,取消指定号码的例行性工作
其中设定一个at工作的例子如下:
[root@localhost ~]# at now + 5 minutes at> /bin/mail root -s "testing at job" < /root/.bashrc at> <EOT> #这里输入ctrl+d表示结束输入 也就是在at命令后面接一个时间点,然后会进入一个at shell的环境,用户便可以输入自己要执行的命令,最后使用ctrl+d结束输入。 时间的格式有: (1)HH:MM eg: at 04:50 #表示04:50开始执行命令 (2)HH:MM YYYY-MM-DD eg: at 04:30 2016-01-09 #表示在04:30 2016-01-09时间点执行命令 (3)HH:MM[am|pm] [Month] [Date] eg: at 04:15pm March 17 (4)HH:MM[am|pm] + num [minutes|hours|days|weeks] eg: at 05:29am + 5 minutes #表示在上午05:29后的5分钟开始执行任务 at now + 5 hours #表示5小时后开始执行任务
Remarks:使用batch,可以让系统在CPU比较空闲的时间来执行例行性任务
4.循环执行的例行性工作——crontab方式
(1)crond的安全控制
crond服务使用cron.allow和cron.deny两个文件来进行crond的安全控制。在cron.allow中配置的账户,或者不在cron.dely中配置的用户才可以使用crond服务。
(2)crontab任务的两种配置方式
a)crontab -e方式:例行性任务会被记录到/var/spool/cron/${账户} 文件里面了。
b)写入/etc/crontab文件中的方式:有命令类型和目录规划两种设定的方式。如下:
#法一:命令形式,即是将需要执行的命令直接写到/etc/crontab中 */30 * * * * work sh resize_quota.sh #法二:目录形式,即是将需要例行化脚本放到一个目录中,然后使用run-parts dir命令去执行dir中所有可执行脚本 01 * * * * root run-parts /etc/cron.hourly #假设我们先每小时执行一个任务,就可以将任务的可执行脚本放到/etc/cron.hourly目录中,然后run-parts去执行/etc/cron.hourly目录下所有的可执行脚本
备注:如果修改了/etc/crontab可能不会立即生效,那么需要使用/etc/init.d/crond restart重启一下crond服务。
(3)关于crontab时间设定的规则
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 |
取值范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 |
其中周字段中0和7都表示星期天
几个特殊字符
特殊字符 | 代表含义 | 举例 |
*(星号) | 无论在那个字段,表示该字段任何时刻都执行 | 0 * * * * command 表示每星期、每月份、每一天、每小时的0分钟的时候将调度 |
,(逗号) | 0 3,6 * * * command 表示在每3点0分和每6点0分的时候,开始执行命令 | |
-(减号) | 0 3-6 * * * command 表示在每3点到6点的0分的时候,开始执行执行 | |
/n(数字) | 每间隔n单位 | */5 * * * * command 表示每5分钟执行一次命令,上面和0-59/5 * * * * command是一样的。 |