首页 > 代码库 > 2.6 计划任务
2.6 计划任务
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~7(0、7代表周日) |
如果需要指定的是时间段,可以使用横杠(-)表示一段连续的时间,使用逗号(,)表示若干个不连续的时间,使用星号(*)表示所有的时间,使用(/)表示间隔时间。
[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中的用户无法使用计划任务,其他所有的用户均可使用计划任务。