2016-06-28 68 views
0

我有一個Perl腳本和CPAN Twitter模塊的問題。Crontab和perl

我有一個運行speedtest的腳本,並試圖將結果發佈到Twitter。

我設法讓我的腳本通過從我的用戶帳戶運行./speedtest.pl手動運行,但是當我嘗試使用crontab運行它時,出現錯誤。

我一直在使用

cpanm Net::Twitter 

(注:沒有須藤)安裝Net::TwitterFile::HomeDirConfig::Tiny我碰到下面的錯誤,當我從我的本地運行crontab我的腳本: -

Can't locate Net/Twitter.pm in @INC (you may need to install the 
Net::Twitter module) (@INC contains: /etc/perl /usr/local/lib/arm-linux- 
gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux- 
gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf 
/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at /home/pi 
/speedtest.pl line 99. 
BEGIN failed--compilation aborted at /home/pi/speedtest.pl line 99. 

有人能請我指出正確的方向?我懷疑它與Net::Twitter等最後有什麼關係,但我不知道如何解決它,以便crontab知道在哪裏可以找到它。

speedtest.pl is here

+1

如果你運行'perl -v'你會得到哪個版本?這看起來像你已經安裝了兩個版本的Perl。典型的罪魁禍首是'/ usr/bin/perl'和'/ usr/local/bin/perl'這個腳本已被明確告知使用前者。 – Sobrique

+0

perl 5,版本20,subversion 2(v5.20.2) –

回答

1

,你在命令行中運行的Perl安裝是由系統中的一個運行不同的,當一個crontab作業執行

嘗試which perl,再看看同樣的命令的輸出在cron下運行

有幾種方法可以解決這個問題,具體取決於系統的配置。最明顯的是使用你自己的perl副本的完整路徑,但雖然這可能會讓事情進行,但這可能是一個壞主意

+0

那麼我該怎麼做?從用戶帳戶運行'perl'給我'/ usr/bin/perl',但我不知道如何解決這個問題?不知道如何用cron查看它 –

+0

更改腳本 - 放入'#!/ usr/local/bin/perl'。或者'/ usr/bin/perl -MCPAN -e shell'並在站點perl中安裝你需要的庫。 – Sobrique

+0

文件頂部的'#!/ usr/local/bin/perl'給我提供'-bash:./speedtest.pl:/ usr/bin/local/perl:壞的解釋器:當沒有這樣的文件或目錄時我用'。/ speedtest.pl'運行這個文件。 '/ usr/bin/perl -MCPAN -e shell'後跟'install Net :: Twitter,告訴我'Net :: Twitter是最新的(4.01020)'。 –

1

我想你可能已經使用你的本地帳戶安裝了Net :: Twitter。 登錄到根&安裝模塊應該可以解決這個問題。