免费注册 查看新帖 |

Chinaunix

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

PERL在crontab中的困惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-13 16:57 |只看该作者 |倒序浏览
编了个perl程序,就是想每隔一个小时运行一次,检查一下业务进程guard(在目录/service/bin/目录下)的运行情况,如果没有运行,就把该进程给启动。所以perl脚本中写了如下内容:

readpipe("cd /service/bin;./guard -d;pwd");

当把该perl脚本放在crontab中运行时,其中cd /service/bin和pwd命令都执行成功了,但是启动guard进程的命令./guard -d, -d是启动guard必带的参数。 该命令没有执行成功,因为打印的log显示之后guard进程没有运行。



如果手动执行该perl脚本,guard进程是可以正常启动的,请高手帮忙给出原因,谢谢!我是菜鸟,困惑老久了。



论坛徽章:
0
2 [报告]
发表于 2012-09-13 17:15 |只看该作者
1。权限问题
2。环境变量问题
都检查下

论坛徽章:
0
3 [报告]
发表于 2012-09-13 22:27 |只看该作者
是在root帐号下配置的crontab,应该可以运行一切吧。  况且手动执行脚本是可以的。

论坛徽章:
0
4 [报告]
发表于 2012-09-14 00:38 |只看该作者
顶起。。。。

论坛徽章:
0
5 [报告]
发表于 2012-09-14 08:20 |只看该作者
guard程序运行需要环境变量。在cron中没有。
可以
5 5  * * * . ./bash_profile;/service/bin/guard -d 这样

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2012-09-14 08:35 |只看该作者
回复 1# weiqianc

应该就是仙子说的问题。没遇到过其他情况。

有时候pinpoint问题用的是common sense,和是什么鸟没关系。
./guard -d 没执行成功,那就换成绝对路径看看,再不行换一个简单print一行的perl脚本看看,再不行就换一个没参数的脚本试试,再不行就不用readpipe了用system。即使是盲目的试,3分钟之内也到结果了。
   

论坛徽章:
0
7 [报告]
发表于 2012-09-14 14:30 |只看该作者
没经验那就只能试试了呗~  

论坛徽章:
0
8 [报告]
发表于 2012-09-14 16:00 |只看该作者
$ENV{PATH} = $ENV{PATH} . ":/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin";
尝试着在perl中把所有环境变量都添加进去了,还是不行。

论坛徽章:
0
9 [报告]
发表于 2012-10-08 13:09 |只看该作者
在perl脚本中添加下环境变量 应该就可以了 $ENV{'PATH'}='/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin';

论坛徽章:
0
10 [报告]
发表于 2012-10-10 16:45 |只看该作者
写个bash source ~/.bashrc 然后再执行perl
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP