我正在運行 Cent OS 7 並嘗試呼叫 perl 腳本將我的 Plex 媒體伺服器的無線電視指南資料更新為 XML。
問題是 Cron 不運行該腳本。
如果我在 shell 中執行腳本,則它可以透過以下命令正常運行:
/usr/bin/perl /home/Media/Misc/TVXML/hr_epg.pl > /home/Media/Misc/TVXML/test.xml
如果我通過 cron 運行它(每分鐘只是為了測試):
* * * * * /usr/bin/perl /home/Media/Misc/TVXML/hr_epg.pl > /home/Media/Misc/TVXML/test.xml
什麼都沒發生。
所以如果我運行 cron:
* * * * * /usr/bin/perl /home/Media/Misc/TVXML/hr_epg.pl > /home/Media/Misc/TVXML/test.xml var1 var2 &>>/home/Media/Misc/TVXML/cron.log
以及 cron.log 的導出:
無法在@INC中找到JSON.pm(@INC包含:/usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/ lib64 /perl5 /usr/share/perl5 .) 在/home/Me$ BEGIN 失敗- 編譯在/home/Media/Misc/TVXML/hr_epg.pl 第4 行中止。
第4行是:使用JSON;
Perl 檢查:
perl -E'說 $^X' /usr/bin/perl
cpan JSON:
cpan JSON 讀取「/root/.cpan/Metadata」資料庫於 2019 年 6 月 29 日星期六 00:55:31 GMT 使用 LWP 取得: http://mirrors.namecheap.com/CPAN/authors/01mailrc.txt.gz 正在讀取'/root/.cpan/sources/authors/01mailrc.txt.gz' .............................. ..................................................完成使用LWP 取得: http://mirrors.namecheap.com/CPAN/modules/02packages.details.txt.gz 正在讀取 '/root/.cpan/sources/modules/02packages.details.txt.gz' 資料庫於 Sun, 30 Jun 2019 01:56:15 GMT 產生......新 CPAN .pm 版本(v2. 26) 可用。 [目前正在執行的版本是 v1.9800] 您可能想要嘗試安裝 CPAN reload cpan 以升級 CPAN.pm 並執行新版本,而無需離開目前工作階段。
.................................................. .... ......完成使用 LWP 取得: http://mirrors.namecheap.com/CPAN/modules/03modlist.data.gz 讀取 '/root/.cpan/sources/modules/03modlist.data.gz' 完成 寫入 /root/.cpan/Metadata JSON 是最新的 (4.02)。
如果有人可以給我一些幫助,因為 JSON 就在那裡並且這個腳本確實通過 CLI 運行,那就太好了。
謝謝
答案1
@INC
cron 執行的命令和@INC
您在終端機中手動執行的命令之間似乎存在差異。
無論如何,找到該庫所在的目錄:locate JSON.pm
假設目錄是/usr/libs
,將此行新增至腳本頂部:
use lib '/usr/libs";