首页 > 代码库 > Linux的计划任务

Linux的计划任务

  • 一次性任务—— 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



本文出自 “被褐怀玉徳善人间” 博客,请务必保留此出处http://deshanrenjian.blog.51cto.com/9324633/1555356

Linux的计划任务