cron が json.pm エラーを返す Cent OS 7

cron が json.pm エラーを返す Cent OS 7

Cent OS 7 を実行しており、Perl スクリプトを呼び出して、Plex メディア サーバーの Over the Air TV Guide データを XML に更新しようとしています。

問題は、Cron がスクリプトを実行しないことです。

シェルでスクリプトを実行すると、次のコマンドで正常に実行されます。

/usr/bin/perl /home/Media/Misc/TVXML/hr_epg.pl > /home/Media/Misc/TVXML/test.xml

cron 経由で実行する場合 (テストのため 1 分ごとに実行):

* * * * * /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 のエクスポート:

/home/Me$ の @INC (@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 が含まれています。) で JSON.pm が見つかりません。BEGIN が失敗しました。/home/Media/Misc/TVXML/hr_epg.pl の 4 行目でコンパイルが中止されました。

4行目: use JSON;

Perl チェック:

perl -E'$^X' とします /usr/bin/perl

cpanJSON:

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' を読み込んでいます。データベースは、2019 年 6 月 30 日 (日) 01:56:15 GMT に生成されました ............. 新しい CPAN.pm バージョン (v2.26) が利用可能です。[現在実行中のバージョンは v1.9800 です] CPAN をインストールして 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

@INCcron によって実行されたものと、@INCターミナルで手動で実行されたものとの間に矛盾があるようです。

いずれにしても、ライブラリがあるディレクトリを見つけます。locate JSON.pm

ディレクトリが だとすると/usr/libs、スクリプトの先頭に次の行を追加します。

use lib '/usr/libs";

関連情報