2.6 计划任务

Linux系统有两种计划任务,一种是只会执行一次at计划任务,一种是可以周期性地执行的cron计划任务。

 

2.6.1 at一次性计划任务

使用at指定一次性计划任务前需要确保atd服务是开启的,否则计划任务不会被执行,使用service atd start开启服务,并使用chkconfig atd on确保该服务开机启动。

at

描述:在指定的时间执行特定的命令

用法:at 时间

选项:-m当计划任务执行结束后发送邮件给用户

-l查看用户计划任务

-d删除用户计划任务

-c查看at计划任务具体内容

[root@instructor ~]# at 1213
at> ls -l /tmp
at> <EOT>   (Ctrl+D)
job 7 at 2014-08-15 12:13

at命令可以使用的时间格式有很多,at 小时:分钟(默认代表当天时间),at 4pm+3days(代表3天后的下午4点执行计划任务),at 12:00 2014-12-12(指定年月日及日期的计划任务),具体可以参考at帮助手册。

 

2.6.2 cron周期性计划任务

使用cron指定一次性计划任务前需要确保crond服务是开启的,否则计划任务不会被执行,使用service crond start开启服务,并使用chkconfig crond on确保该服务开机启动。

crontab

描述:为每个用户维护周期性的计划任务

用法:crontab [-u 用户] [-l|-r|-e]

选项:-u指定计划任务的用户,默认为当前用户

-l查看计划任务

-r删除计划任务

-e编辑计划任务

-i使用-r删除计划任务时,要求用户确认删除

2-8

第一列

第二列

第三列

第四列

第五列

第六列

命令

00~59

00~23

1~31

1~12

0~707代表周日)

如果需要指定的是时间段,可以使用横杠(-)表示一段连续的时间,使用逗号(,)表示若干个不连续的时间,使用星号(*)表示所有的时间,使用(/)表示间隔时间。

[root@instructor ~]# crontab -e
50 12 15 8 * /usr/bin/free | mail -s "Mem" root

 

Centos系统自定义了很多计划任务脚本,分别存放在/etc/下的cron.daily/cron.hourly/cron.monthly/cron.weekly/等目录中,如果你有脚本需要每天执行,可以将脚本存放在cron.daily/目录中,系统会自动帮你每天运行该脚本。

 

2.6.3 计划任务权限

为了控制用户随意定义自己的计划任务,管理员可以进行ACL访问控制,at计划任务的控制文件分别为/etc/at.allow/etc/at.deny,默认at.allow不存在。cron计划任务的控制文件分别为/etc/cron.allow/etc/cron.deny,默认cron.allow不存在。

控制文件仅需要写入用户名即可,一行一个用户名,当allow文件存在时,仅在allow文件中出现的用户可以使用对应的计划任务,如果allow文件与deny文件同时存在一样的账户,则仅出现在allow中的用户可以使用计划任务。如果没有allow文件而仅有deny文件,则所有出现在deny中的用户无法使用计划任务,其他所有的用户均可使用计划任务。