- 締切済み
cronでのPerlスクリプト実行
少し前に同様の質問をしましたが、やはり解決していませんでした。 #!/usr/bin/perl open(OUT,">/home/test/test.log"); print OUT "OK"; close(OUT); このスクリプトをcrontabに以下のように記述しました。 0 0 * * * /home/test/test.pl > /dev/null 2>&1 パーミッションは省略します。 このようにすると、正常にtest.logが出力されました。 しかし、本当に実行したいスクリプトを同様にしたところ、 正常に動作しませんでした。cronログには記録されます。 実際のスクリプトは長いのでここには掲載できませんが、 主な処理はおおよそ次のようなことをしています。 ・pmとplモジュールがあり、plからpmを呼び出している。 ・plもpmも自作のユーザ関数の組み合わせ ・ファイルはtestユーザが所有し、実行権限は777。 (動作確認後、徐々に落としていきます) ・plでは、use encoding 'utf8'。 ・スクリプトにオプションを付けて、引数を読み込む。 ・loggerでsyslogへ結果を出力。 ・子プロセスを生成して処理の一端を行わせている。 ・opendir、readdirなどを使用。 ・xxxxxx.datファイルを読み書きしている。 ・CPANにあったメール送受信モジュールを使用している。 ・ファイルをbz2圧縮している。 などです。 コマンドラインから実行すると確実に正常に動作します。 気になるのはPerlスクリプトの内容でモジュールを使うときは、 パスが通っていてもフルパス指定しないといけないのでしょうか? しかし、フルパスと言ってもせいぜいsystem()で実行するコマンドを フルパスにするくらいしか思いつきません。 うまく実行できない理由として考えられる可能性があることを 教えてもらえませんか? 根本的な解決としては、cronでの実行とコマンドラインからの実行は 何が違うのかが明確になれば対処できるのかもしれません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- HoComeCome
- ベストアンサー率27% (44/160)
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2141748 のような態度でよくまた質問できますね。 その厚顔っぷりに脱帽です。ぐぐれば?
- bouchan_1986_001
- ベストアンサー率28% (2/7)
今されている例えば、プリンタなどを大事に使われてはどうでしょうか。
お礼
この間は失礼しました。 回答していただいた内容をきちんと理解していませんでした。 それでも結局は解決してませんでしたのでまた質問しました。 いろいろ考えてみたのですが、解決するための基本的な知識がまだまだ足りないようです。 またお願いします。