如何从 crontab 调用 perl?

如何从 crontab 调用 perl?

我可以从我的机架服务器共享主机的 SSH 控制台正常运行此命令:

cd /home/myaccount/public_html/whatever; perl -w 
-I/home/myaccount/public_html/whatever rss2txt.pl http://whatever.com/feed

但是当我输入与 cron 作业相同的命令时,我得到:

Can't locate XML/RSS.pm in @INC (@INC contains: /home/myaccount/public_html/whatever /usr/local/lib/perl5/5.8.8/x86_64-linux /usr/local/lib/perl5/5.8.8 /usr/local/lib/perl5/site_perl/5.8.8/x86_64-linux /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl . .) at rss2txt.pl line 21. BEGIN failed--compilation aborted at rss2txt.pl line 21.

尽管 RSS.pm 就在它旁边的同一目录中(/home/myaccount/public_html/whatever),并且它在 @INC 中也有该路径,而且我已将其设置cd为正确的文件夹,但它仍然会发出抱怨。

考虑到它是在共享主机上,所以我无法更改全局设置,我怎样才能说服 perl 在其中寻找 RSS.pm /home/myaccount/public_html/whatever

不确定是否相关,但这是 rss2txt.pl:http://pastebin.com/GWKZtJCN

ramruma 建议将其转换为 shell 脚本(如下)。我在这里尝试了一下,因为注释不能是多行的:

#!/bin/bash
PERL5LIB=$HOME/public_html/whatever
PATH=$PATH;$HOME/public_html/whatever
cd $HOME/public_html/whatever
perl -w -I$HOME/public_html/whatever rss2txt.pl http://whatever.com/feed

尽管将文件夹添加到 PERL5LIB、PATH 和 @INC,但此 shell 脚本甚至无法从 SSH 控制台运行。因此,如果我们能让这个 shell 脚本运行,我想我们就能解决问题了。

答案1

编写一个 shell 脚本,在设置任何适当的环境变量后运行该命令。

答案2

您可以将本地目录添加到 cron 脚本顶部的 PERL5LIB 环境变量中,如下所示;

PERL5LIB=/home/myaccount/public_html/whatever:.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

52 * * * *  /usr/bin/perl -w -I/home/myaccount/public_html/whatever/rss2txt.pl http://whatever.com/feed

相关内容