contab 使用方法 定时运行perl

crontab-e也可以直接编辑时程表来运行。

说明:crontab是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。

-uuser是指设定指定user的时程表,这个前提是你必须要有其权限(比如说是root)才能够指定他人的时程表。如果不使用-uuser的话,就是表示设定自己的时程表。

参数:-e[UserName]:执行文字编辑器来设定时程表,内定的文字编辑器是VI,如果你想用别的文字编辑器,则请先设定VISUAL环境变数来指定使用那个文字编辑器(比如说setenvVISUALjoe) 

 -r[UserName]:删除目前的时程表 

 -l[UserName]:列出目前的时程表

-----------------------------------------------------------------------------------------------------------------------------------------------

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

 cronfile_test文件的内容:

* * * * * /usr/bin/perl /kankan/test.pl

test.pl:

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

在crontab里面最好使用绝对路径

*****/usr/bin/perl/kankan/test.pl

另外你的脚本test.pl里面,如果可能也使用绝对路径,或者在脚本的开头chroot到当前路径。

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

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

----------------------------------------------------------------------------------------------------------------

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中#(这个方法真是让人无话可说......)

举例:

表示8月27、28两天的晚上7点0、1、2、3分钟开始运行crawler程序。

01927,288*/usr/bin/perl/home/kankan/ShopStyleTest/code/bin/crawler.plbeams_jp

########################################################################################################

crontab文件每个条目中各个域的意义和格式:

第1列分钟1~59

第2列小时1~23(0表示子夜)

第3列日1~31

第4列月1~12

第5列星期0~6(0表示星期天)

第6列要运行的命令

下面是crontab的格式:

分<>时<>日<>月<>星期<>要运行的命令

其中<>表示空格

这里有crontab文件条目的一些例子:

3021***/apps/bin/cleanup.sh

上面的例子表示每晚的21:30运行/apps/bin目录下的cleanup.sh。

4541,10,22**/apps/bin/backup.sh

上面的例子表示每月1、10、22日的4:45运行/apps/bin目录下的backup.sh。

101**6,0/bin/find-name"core"-execrm{}\;

上面的例子表示每周六、周日的1:10运行一个find命令。

0,3018-23***/apps/bin/dbcheck.sh

上面的例子表示在每天18:00至23:00之间每隔30分钟运行/apps/bin目录下的dbcheck.sh。

023**6/apps/bin/qtrend.sh

上面的例子表示每星期六的11:00pm运行/apps/bin目录下的qtrend.sh。

相关推荐