Chinaunix
标题:
crontab,perl,system,@INC
[打印本页]
作者:
yybmsrs
时间:
2012-04-12 17:55
标题:
crontab,perl,system,@INC
今天写了个perl程序要放到crontab执行,perl代码里面用system调用另外一个perl,以前都是写个sh来调用perl,今天懒得写了直接在crontab里面用perl,形如:1 * * * * myperl.pl
结果没执行,检查发现是perl不同解释器问题,就改为perl myperl.pl ,这次执行了,但是system调用的perl报错没有找到pm包,于是随手就在myperl.pl里面use lib "...",结果还是不行,
print @INC发现system没有用到use lib的路径,仔细一想system确实不会复制当前的环境。哎,真是一不小心就出错啊。
问题的根源就在于没有source当前用户的环境。
作者:
sjdy521
时间:
2012-04-12 18:06
为啥不直接用pm包所对应的perl解释器去执行你的myperl.pl,不然又是@INC,又是source的,另外,也很可能导致那pm包在当前perl解释器下不可用
作者:
yybmsrs
时间:
2012-04-12 18:32
回复
2#
sjdy521
恩。其实当前用户下所有的pl和pm用的都是同一个解释器,只是root没有这个解释器的环境。
作者:
ttcn_cu
时间:
2012-04-12 20:10
回复
1#
yybmsrs
myperl 头上写:
use FindBin;
use lib "$FindBin::RealBin";
假设myperl.pl 和它的pm在同一个目录下
作者:
kk861123
时间:
2012-04-13 08:57
本帖最后由 kk861123 于 2012-04-13 08:58 编辑
system确实不会复制当前的环境
您说的意思是system的执行程序时,环境变量没有从主程序中继承下来吗?
作者:
qdice007
时间:
2012-04-13 12:37
和crontab执行的环境变量设置有关的,建议man一下crontab
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2