重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

rootが書き込み権限を有する映像ファイルを加工するために、次のようなcron設定で /usr/bin/mpeg2desc に1GB程度のファイルを標準入力から流し込むと、数百KB処理したところで中断してしまいます。
原因・対策がわかりませんでしょうか。
コマンドラインから手動で行うと正常です。
スクリプトにして引数のないコマンドで実行しても同じことでした。

# crontab -l

PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/java/jre1.5.0_07/bin
SHELL=/bin/bash
HOME=/root

00 20 5 11 * mpeg2desc -v0 -o dir1/out.m2v < dir2/in.file


$ which mpeg2desc
/usr/bin/mpeg2desc

2006年11月5日

A 回答 (3件)

>cronでの標準出力・エラー出力は勝手にどこかに消えていくのかと思っていました。

これについて勉強できるURLをどなたかお教え頂ければ、幸いです。

man cron で判りますが、出力が空でなければメールされます。
容量制限があるとは知りませんでした。まあ、通常は空か若干のエラーメッセージ程度なので。
    • good
    • 0
この回答へのお礼

notnot様、ありがとうございます。

たしかに man cron に書かれています。
メールシステムを動かしていないので気付きませんでした。

2006年11月7日

お礼日時:2006/11/07 22:20

うまく通じなかったようですが、シェルの初期化ファイルで環境変数が設定されているのではないかということです。

環境変数一覧は、exportコマンドで表示できます。

例えば、/var/tmp の容量は大きいけど /tmp は小さいとか。
    • good
    • 0
この回答へのお礼

notnot様、たびたびありがとうございます。

# export で確認しましたが、妙な変数設定は見当たりませんでした。

一方、mpeg2descは、動作中に大量のメッセージを標準出力に吐き出すのですが、それを /dev/null に捨てると正常に動きました。
具体的には、次のとおりです。
こういう仕組みを知らなかったです。
cronでの標準出力・エラー出力は勝手にどこかに消えていくのかと思っていました。これについて勉強できるURLをどなたかお教え頂ければ、幸いです。

# crontab -l

PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/java/jre1.5.0_07/bin
SHELL=/bin/bash
HOME=/root

00 20 6 11 * mpeg2desc -v0 -o dir1/out.m2v < dir2/in.file > /dev/null

2006年11月6日

お礼日時:2006/11/06 21:44

コマンドラインとcronで実行結果が違うのは環境変数の問題が多いです。


例えば、コマンドラインでTMPDIR等が設定されているとか。

この回答への補足

notnot様、ありがとうございます。

質問欄に記載した例のとおり、cronでも手動でも、コマンドラインでTMPDIRなどの指定をしていません。
mpeg2descにはmanが付いていないのでよくわかりませんが、root権限で動かしていますので、勝手にどこかに書き込むのならば書き込めているように思われます。

2006年11月5日
RASUM2

補足日時:2006/11/05 22:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!