为什么我的Perl脚本在cron运行时无法加载模块?

前端之家收集整理的这篇文章主要介绍了为什么我的Perl脚本在cron运行时无法加载模块?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一堆Perl脚本都运行良好,但需要使用Plibdata;在顶部.

我设置了一个运行的cron作业(我从root获取确认电子邮件)并且它回吐了以下错误消息:

Can't locate Plibdata.pm in @INC (@INC contains: /install/lib /opt/perl58/lib/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl58/lib/5.8.8 /opt/perl58/lib/site_perl/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl58/lib/site_perl/5.8.8 /opt/perl58/lib/site_perl .) at ./x line 5.

BEGIN Failed--compilation aborted at ./x line 5.

第5行是……你猜对了….使用Plibdata;

我也试图设置环境:

use lib "$ENV{CARSPATH}/install/lib";

所以也许如果我找到了这个plibdata的位置,我可以明确指示它吗?

我的cron命令将使用/usr/bin/sh执行crontabs …

有什么建议?

此脚本从命令行运行.

解决方法

像其他人建议的那样从包装脚本运行程序可能是我的首选方法,但可能还有一些其他解决方案:

如果您使用的是现代cron,则可以在crontab条目中执行以下操作:

* * * * * CARSPATH=/opt/carsi x

用适当的时间表指示符替换星号.

这将为x进程设置CARSPATH,并允许使用传递环境变量的lib语句.

您还可以根据shell和cron实现将环境设置存储在文件中,并执行以下操作:

* * * * * source specialenv.sh && x

specialenv.sh包含的行(用于bash)

export CARSPATH=/opt/carsi

如果您选择这样做,您也可以直接在crontab中设置环境变量.

猜你在找的Perl相关文章