您的位置:首页 > 运维架构 > Linux

Linux的计划任务

2014-09-19 22:59 211 查看
一次性任务—— at、batch 命令

at TIME 用户在'at>'提示符下交互式的提交要在指定的时间执行的命令任务。最后, 以'Ctrl+d'组合键提交任务。
-q queue 指定任务队列编号,一般以26个英文字母中的一个字母作为队列名
-l 显示当前用户提交的等待将来指定时间执行的任务。相当于命令: atq
-d job_num 删除指定作业编号的任务。相当于命令: atrm job_num
-f file 将执行的命令任务放置于指定文件中提交,而非以交互方式提交。

时间指定方式:
精确时间 HH:MM
例: at 14:30 在下午2点30分执行计划任务
模糊时间 now, noon, midnight, teatime, tomorrow
等,还可以是以上时间在加上 一个指定时间单位(minutes, hours, days, weeks)
例: at midnight 在24:00执行计划任务
at now+3 hours 在3个小时后执行计划任务

batch 以交互的方式提交任务,该任务会在系统不忙的时候自动执行。

周期性任务—— crontab 命令

周期性任务由系统守护进程crond在任务的周期性时间到来时,负责执行。提交的周期性任务分两类:系统级和用户级。系统级任务以root用户身份执行,用户级任务以提交任务的用户的身份执行。

系统级的任务在相应的配置文件或目录中指定:
/etc/crontab
/etc/cron.d/ 在该目录下自定义文件名,将周期性任务配置在文件内。
/etc/cron.daily 在该目录下放置自定义的周期性任务脚本,脚本每天执行一次。
/etc/cron.hourly 在该目录下放置自定义的周期性任务脚本,脚本每小时执行一次。
/etc/cron.weekly 在该目录下放置自定义的周期性任务脚本,脚本每周执行一次。
/etc/cron.monthly 在该目录下放置自定义的周期性任务脚本,脚本每月执行一次。

用户级任务通过'crontab
-e'命令打开文本编辑器的方式配置。假定提交任务的用户的用户名为'redhat',则相应产生的配置文件为: /var/spool/cron/redhat
crontab 命令
-e 编辑当前用户的cron任务
-l 查看当前用户提交的周期性任务。
-r 删除当前用户的cron配置文件。相当于删除当前用户所有的cron任务。
-u username 为指定的用户配置其cron任务,只有root可以这样做。

cron任务配置的时间表示法:
# For details see man 4 crontabs
# Example of job definition:
#
.---------------- minute (0 - 59)
# | .------------- hour
(0 - 23)
# | | .---------- day of month (1 -
31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr
...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
OR sun,mon,tue,wed,thu,fri,sat
# | | | |
|
# * * * * * user-name command to be executed

1、每个时间位都应该使用其可用的有效取值范围内的值;
2、某时间位上的*表示对庆应位的所有有效取值;
3、-: 连续的时间相邻点取值;
4、,: 离散的时间点取值;
5、/#:表示在指定时间范围内每隔#一次;
举例:5-45/3 * * * *

注: 如果在crontab的用户命令中使用%,得转义为\%。举例:
5 3 * * * /bin/touch ~/testfile_`date
+\%Y-\%m-\%d`.txt
在使用单引号后,%也可以不用转义。举例:
5 3 * * * /bin/touch ~/testfile_`date
+'%Y-%m-%d'`.txt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux at crond crontab