免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1517 | 回复: 0
打印 上一主题 下一主题

Linux——Crontab使用详解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-03 09:03 |只看该作者 |倒序浏览

名称 : 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.
基本格式 :*  *  *  *  *  command分  时  日  月  周      命令M: 分钟(0-59)。每分钟用*或者 */1表示H:小时(0-23)。(0表示0点)D:天(1-31)。m: 月(1-12)。d: 一星期内的天(0~6,0为星期天)。cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量
说明 :crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。参数 :crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)crontab -r : 删除目前的时程表crontab -l : 列出目前的时程表crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :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 的方式来设定时程表。例子 :#每天早上7点执行一次 /bin/ls :0 7 * * * /bin/ls在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /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 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"20 0-23/2 * * * echo "haha"注意 :
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可
例子2 :#每天早上6点10分10 6 * * * date
#每两个小时0 */2 * * * date
#晚上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 -l 列出用户目前的crontab./usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。crontab文件的一些例子:30 21 * * * /usr/local/etc/rc.d/lighttpd restart上面的例子表示每晚的21:30重启apache。45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart上面的例子表示每月1、10、22日的4 : 45重启apache。10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart上面的例子表示每周六、周日的1 : 10重启apache。0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart上面的例子表示每星期六的11 : 00 pm重启apache。* */1 * * * /usr/local/etc/rc.d/lighttpd restart每一小时重启apache* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart晚上11点到早上7点之间,每隔一小时重启apache0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart每月的4号与每周一到周三的11点重启apache0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart一月一号的4点重启apache例子:每两个时间值中间使用逗号分隔。除了数字还有几个个特殊的符号就是”*”、”/”和”-”、”,”,*代表所有的取值范围内的数字,”/”代表每的意思,”*/5″表示每5个单位,”-”代表从某个数字到某个数字,”,”分开几个离散的数字。每天早上6点0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。每两个小时0 */2 * * * echo "Have a break now." >> /tmp/test.txt晚上11点到早上8点之间每两个小时,早上八点0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点0 11 4 * 1-3 command line1月1日早上4点0 4 1 1 * command line每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。2.编辑/etc/crontab 文件配置croncron 服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号HOME=/        //使用者运行的路径,这里是根目录# run-parts01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。5,15,25,35,45,55 16,17,18 * * * command这就是表示任意天任意月,其实就是每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。[例] 在每周一,三,五的下午3:00系统进入维护状态,重新启动系统。那么在crontab 文件中就应该写入如下字段:00 15 * * 1,3,5 shutdown -r +5然后将该文件存盘为foxy.cron,再键入crontab foxy.cron安装该文件。[例] 每小时的10分,40分执行用户目录下的innd/bbslin这个指令:10,40 * * * * innd/bbslink[例] 每小时的1分执行用户目录下的bin/account这个指令:1 * * * * bin/account[例] 每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)[例] 每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt[例] 我们来看一个超级用户的crontab文件:#Run the ‘atrun’ program every minutes#This runs anything that’s due to run from ‘at’.See man ‘at’ or ‘atrun’.0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/atrun40 7 * * * updatedb8,10,22,30,39,46,54,58 * * * * /bin/sync


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/95470/showart_2044416.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP