contab 使用方法 定时运行perl

[color=red][i][b]crontab -e也可以直接编辑时程表来运行。[/b][/i][/color]


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

  
参数 : -e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)  
[b] -r [UserName]: 删除目前的时程表  
 -l [UserName]: 列出目前的时程表 [/b]

-----------------------------------------------------------------------------------------------------------------------------------------------
[b]1.[/b]用VI编辑一个文件 cronfile_test(名字随便起),然后在这个文件中输入格式良好的时程表。编辑完成后,保存并退出。

 cronfile_test文件的内容:
* * * * * /usr/bin/perl /kankan/test.pl

test.pl:
open (RW,">>/kankan/log.txt");
print RW "abc\n";
close RW;


[b]在crontab里面最好使用绝对路径
* * * * * /usr/bin/perl /kankan/test.pl
另外你的脚本 test.pl 里面,如果可能也使用绝对路径,或者在脚本的开头 chroot 到当前路径。[/b]

[b]2。[/b]在命令行输入$: [b]crontab cronfile_test[/b] ,这样就将cronfile文件提交给cron进程,同时,新创建cronfile的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名。

此时test.pl就将每分钟执行一次,此方法讲解结束。

----------------------------------------------------------------------------------------------------------------
[b]perl程序经常会发生放在crontab里面不能被执行的现象,因为perl所使用的环境变量为系统的环境变量,而crontab在运行时不使用当前系统的环境变量,因此为了解决这个问题有两种方法:
1、在perl程序里面凡是涉及到执行命令或者读写文件的语句,都要在用绝对路径描述该命令或文件.
2、在crontab -e中指命PATH等环境变量
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
HOME=/var/log

再奉送一个超级无敌解决方法:可以写一个shell脚本,脚本内容是执行perl程序,然后把shell程序放在crontab中 #(这个方法真是让人无话可说...... :x )
[/b]


举例:
表示8月27、28两天的晚上7点0、1、2、3分钟开始运行crawler程序。
0 19 27,28 8 * /usr/bin/perl /home/kankan/ShopStyleTest/code/bin/crawler.pl beams_jp


########################################################################################################
c r o n t a b文件每个条目中各个域的意义和格式:
第1列分钟1~5 9
第2列小时1~2 3(0表示子夜)
第3列日1~3 1
第4列月1~1 2
第5列星期0~6(0表示星期天)
第6列要运行的命令


下面是c r o n t a b的格式:
分<>时<>日<>月<>星期<>要运行的命令
其中<>表示空格


这里有c r o n t a b文件条目的一些例子:
30 21 * * * /apps/bin/cleanup.sh
上面的例子表示每晚的21:3 0运行/a p p s/b i n目录下的cleanup.sh。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、1 0、2 2日的4 : 4 5运行/ a p p s / b i n目录下的b a c k u p . s h。
10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
上面的例子表示每周六、周日的1 : 1 0运行一个f i n d命令。
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天1 8 : 0 0至2 3 : 0 0之间每隔3 0分钟运行/ a p p s / b i n目录下的d b c h e c k . s h。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11 : 0 0 p m运行/ a p p s / b i n目录下的q t r e n d . s h。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值