日期:2014-05-16  浏览次数:20735 次

[转] linux定时任务--crontab的用法
Step 1:
    使用命令crontab -e编辑一个定时执行的任务或在/var/spool/cron/crontabs目录下新建一个与自己用户名相同的任务.
    即:
    #每隔一分钟执行一次后台程序tmpmail
    * * * * * /home/milch/tmpmail

     顺便提一下crontab中的命令格式:
     第一个 * 表示分钟 (0-59),
     第二个 * 表示小时 (0-23),
     第三个 * 表示月份中的某一天 (1-31),
     第四个 * 表示一年中的某一月 (1-12),
     第五个 * 表示一周中的星期几 (0-6 with 0=Sunday).

Step 2:
     停止cron进程,并重启,
     命令:/etc/init.d/cron stop
          /etc/init.d/cron start

-------------------------------------
指令语法
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }

指令说明
crontab 提供我们在固定的间隔时间执行自订的程式、系统指令或 shell secrip。时间间隔的单位可以是分钟、小时、日、周、月及以上的任意组合。允许使用者离线执行,并且可以将执行结果以 email 通知使用者。因此,非常设合对周期性的管理分析或资料备份等工作。

基本上,crontab 的指令格式分为六个部分,前五个为时间间隔,最后则是执行的指令。每一个部分用空格来区隔。

分 -- 0-59
时 -- 0-23
日 -- 1-31
月 -- 1-12 或使用英文名称
星期 -- 0-7 或使用英文名称
工作命令 -- 指令,shell script,程式....(建议使用绝对路径)
以上是 crontab 的基本格式。

选项说明

-u user
以指定的使用者身份,执行 crontab 工作。此选项仅供 root 使用。

-l
显示使用者现行的 crontab 档。

-r
移除现行的 crontab 档。

-e
进入 vi 编辑 crontab 档(如有设定 VISUAL 或 EDITOR 环境变数,怎使用该环境变数所设定的编辑器来编辑)。在使用者退出编辑器后,会自动将所编辑 crontab 档,置入 crontab 执行。
相关档案

/etc/cron.allow
/etc/cron.deny

实例说明
# crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.3672 installed on Thu Jan 1 15:55:18 2004)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 0-23/6 * * * /usr/bin/webalizer
30 3 * * * /root/fbin/bak-web
#

先前曾提到,crontab 的格式分成六个部分,前五个是时间参数。在上例中你会发现除了数字与英文名称,有使用到符号"*",这个符号代表每一单位的意思,譬如 30 3 * * * 既代表 30分 3点 每日 每月 星期的每天。

时间的指定,可以是单一的数字,或几个数字用逗号来连接。看下例

30 3,12 * * * /root/fbin/bak-web
其中的第二项为 3,12,这代表 3 以及 12 小时的意思。再来看下例

30 */6 * * * /root/fbin/bak-web
我把第二项改成 */6 这代表每 6 小时,也相当於 6,12,18,24 的作用。此外还有一个区段的做法

30 8-18/2 * * * /root/fbin/bak-web
我把第二项改成 8-18/2 这代表在 8 小时到 18 小时之间每 2 小时,也相当於 8,10,12,14,16,18 的作用。