当前位置: > Linux命令 >

linux crontab 命令详解

时间:2014-09-24 22:09来源:linux.it.net.cn 作者:it

linux crontab 命令详解

使用方式 : 
crontab [ -u user ] file 
crontab [ -u user ] { -l | -r | -e } 
说明 : 
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

[@more@]

使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它. 

参数 : 
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) 
-r : 删除目前的时程表 
-l : 列出目前的时程表 
时程表的格式如下 : 
f1 f2 f3 f4 f5 program 
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。 
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推 
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 
例子 : 
每月每天每小时的第 0 分钟执行一次 /bin/ls : 
0 7 * * * /bin/ls 
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup : 
0 6-12/3 * 12 * /usr/bin/backup 
周一到周五每天下午 5:00 寄一封信给 alex@domain.name : 
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata 
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha" 
20 0-23/2 * * * echo "haha" 
注意 : 
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可 


比如说root查看自己的cron设置:crontab -u root -l 

  再例如,root想删除fred的cron设置:crontab -u fred -r 

  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e 

  进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt 

  编辑/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。 


需要将crond设置为系统启动后自动启动的服务,可以在/etc/rc.d/rc.local 中,在末尾加上 

  service crond start 

  如果还需要在系统启动加载其他服务,可以继续加上其他服务的启动命令。 

  比如: service mysqld start 

  基本用法: 

  1. crontab -l 

  列出当前的crontab任务 

  2. crontab -d 

  删除当前的crontab任务 

  3. crontab -e (solaris5.8上面是 crontab -r) 

  编辑一个crontab任务,ctrl_D结束 

  4. crontab filename 

  以filename做为crontab的任务列表文件并载入 

  crontab file的格式: 

  crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间 

  分钟 (0-59) 

  小时 (0-23) 

  日期 (1-31) 

  月份 (1-12) 

  星期几(0-6,其中 0 代表星期日) 

  第 6 个字段是一个要在适当时间执行的字符串 

  例子: 

  #MIN HOUR DAY MONTH DAYOFWEEK COMMAND 

  #每天早上6点10分 

  10 6 * * * date 

  #每两个小时 

  0 */2 * * * date (solaris 5.8似乎不支持此种写法) 

  #晚上11点到早上8点之间每两个小时,早上8点 

  0 23-7/2,8 * * * date 

  #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 

  0 11 4 * mon-wed date 

  #1月份日早上4点 

  0 4 1 jan * date 

  补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export) 

  (1)先建一个文件crond.txt如下, 每天早上5点36分重新启动 

  36 5 * * * reboot 

  (2)上传到/opt目录 

  (3)运行命令 

  crontab /opt/crond.txt 

  crontab -l 

  让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后。也要重新启动cron服务器。 

  在Fedora 和Redhat中,我们应该用; 

  [root@localhost ~]# /etc/init.d/crond restart 

  如果让crond 在开机时运行,应该改变其运行级别; 

  [root@localhost ~]# chkconfig --levels 35 crond on 

  service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它, cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务 

Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组 成,域之间用空格或Tab分开,其中: 
minutes: 分钟域,值的范围是0到59 
hours: 小时域,值的范围是0到23 
day of month: 日期,值的范围是1到31 
month: 月份,值的范围是1到12 
day of week: 星期,值的范围是0到6,星期日值为0 
command: 所要运行的命令 
如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。 
如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字 本身)。 
如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。 
如果日期域和星期域都有值,则这两个域都有效。 
编写一个文件,用以启动自动备份进程。 
cd /opt 
touch reboot.txt 
在reboot.txt中添加一下内容: 
0 4 * * * reboot 
crontab /opt/reboot.txt 
用crontab -e编辑定时操作,例如加入下行命令: 
用crontab -l命令来查看 
注意:需要启动服务(添加在rc.local中) 
重启crond任务 
/etc/init.d/cron restart (ubuntu下) 
第一种 在Fedora或Redhat 等以RPM包管理的系统中; 
[root@localhost ~]# /etc/init.d/crond start 
[root@localhost ~]# /etc/init.d/crond stop 
[root@localhost ~]# /etc/init.d/crond restart 
/etc/rc.d/init.d/crond restart 
命令简介 
crontab-操作每个用户的守护程序和该执行的时间表。 
部分参数说明 
crontab file [-u user]-用指定的文件替代目前的crontab。 
crontab-[-u user]-用标准输入替代目前的crontab. 
crontab-1[user]-列出用户目前的crontab. 
crontab-e[user]-编辑用户目前的crontab. 
crontab-d[user]-删除用户目前的crontab. 
crontab-c dir- 指定crontab的目录。 
crontab文件的格式:M H D m d cmd. 
M: 分钟(0-59)。 
H:小时(0-23)。 
D:天(1-31)。 
m: 月(1-12)。 
d: 一星期内的天(0~6,0为星期天)。 
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。 
下面是一个例子文件: 
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND 
#每天早上6点 
106* * * date 

#每两个小时 
0*/2* * * date 

#晚上11点到早上8点之间每两个小时,早上部点 
0 23-7/2,8* * * date 

#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
0 11 4* mon-wed date 

#1月份日早上4点 
0 4 1 jan* date 
范例 
lark:~>crontab-1 列出用户目前的crontab. 
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND 
10 6* * * date 
0*/2* * * date 
0 23-7/2,8 * * * date 
lark:~>

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容