设为首页 收藏本站
查看: 1081|回复: 0

[经验分享] contab 使用方法 定时运行perl

[复制链接]

尚未签到

发表于 2017-5-18 12:40:29 | 显示全部楼层 |阅读模式
crontab -e也可以直接编辑时程表来运行。

说明 : crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
  
参数 : -e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)  
-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。在命令行输入$: crontab cronfile_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中 #(这个方法真是让人无话可说...... DSC0000.gif )   


举例:
表示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。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378806-1-1.html 上篇帖子: 请教一道Perl的笔试题 下篇帖子: 神奇的Perl-正则表达式(6)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表