cronでの処理が途中で中断終了する

このQ&Aのポイント
  • rootが書き込み権限を有する映像ファイルを加工するために、cron設定でファイルを標準入力から流し込むと、処理が途中で中断終了してしまいます。
  • 手動で行うと正常に処理されるため、原因を特定することが困難です。cronの設定や実行環境に問題がある可能性があります。
  • 適切な対策を講じるために、ログやエラーメッセージを確認し、パーミッションやパスの設定を含めたcronの設定を再評価する必要があります。
回答を見る
  • ベストアンサー

cronでの処理が途中で中断終了する。

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日

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4835/10236)
回答No.3

>cronでの標準出力・エラー出力は勝手にどこかに消えていくのかと思っていました。これについて勉強できるURLをどなたかお教え頂ければ、幸いです。 man cron で判りますが、出力が空でなければメールされます。 容量制限があるとは知りませんでした。まあ、通常は空か若干のエラーメッセージ程度なので。

RASUM2
質問者

お礼

notnot様、ありがとうございます。 たしかに man cron に書かれています。 メールシステムを動かしていないので気付きませんでした。 2006年11月7日

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4835/10236)
回答No.2

うまく通じなかったようですが、シェルの初期化ファイルで環境変数が設定されているのではないかということです。環境変数一覧は、exportコマンドで表示できます。 例えば、/var/tmp の容量は大きいけど /tmp は小さいとか。

RASUM2
質問者

お礼

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日

  • notnot
  • ベストアンサー率47% (4835/10236)
回答No.1

コマンドラインとcronで実行結果が違うのは環境変数の問題が多いです。 例えば、コマンドラインでTMPDIR等が設定されているとか。

RASUM2
質問者

補足

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

関連するQ&A

  • cronの実行結果通知メールの配信をさせないようにするには?

    RedHat9を使用してます。 # cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ : # crontab -l | more # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.12227 installed on Thu Feb 3 02:58:29 2005) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) # crontab -e SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ : としていて、 記述が増えるに従ってcron実行済みの通知メール数が多くなってきましたので 配信させないように双方とも MAILTO="" してみたのですが相変わらず届いてしまいます。 相変わらずローカルのrootが送信しているようです。 どうすれば配信させないようにできるのでしょうか?

  • cronでとても困っています どなたかご教授いただけないでしょうか

    cronの設定でpersonユーザーで動くように設定したいのですが、動いてくれません なにか設定がおかしいのでしょうか ↓crontabの内容です # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.4208 installed on Thu Jan 25 12:14:20 2007) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 15 12 * * * person /home/test/bin/test.sh rootに送られてくるエラーメッセージです /bin/bash: line 1: person : command not found ご教授いただけたら幸いです 何卒宜しくお願いいたします

  • fedora11でのcron設定

    fedora11,apache,php5の環境でcronを使いたいのですが、動きません。。 状況が、 fedora11 php5 apache を使用していて、cronを使ってphpの定期実行を行いたいのですが、どうしてもうまくいきません。 かなりググってはみたのですが、liuxについては初心者なので、どうにもわかりません。 設定内容が、 /etc/crontabが、 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ * /1 * * * * apache /usr/bin/php /var/www/html/cron.php で、/var/log/cron でログを確認したところ Jul 28 19:00:01 host CROND[8417]: (apache) CMD (/usr/bin/php /var/www/html/cron.php) となっていてこれが一分ごとに出てきます。 cron.phpにはファイル追記の処理を書いてあります。 エラーではないようなのですが、ファイル操作が行われていないようなので動いていないようなのです。 ローカルホストでphpを実行したらちゃんと動くのでphp内のミスではないようです。 パーミッション関係だったらログにエラーが出そうなものですし、、、。困っています。。 どなたかお知恵を貸していただけませんでしょうか、よろしくお願いします。

  • cronでpg_dumpの実行

    こんにちわ。 Linuxでcronを設定しPHPからexecで「pg_dump」を実行しようとしています。 エラーになり実行ができません。 設定は /var/spool/cron ディレクトリに 『crontab -e -u postgres』でコマンドを実行し SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO='' HOME=/ 08 19 * * * postgres /usr/bin/php /home/var/b_dump.php とcrontabに記載しています。 コマンドの実行はrootユーザで 権限は777 にしています。 メールを届くようにしているのですが、届くメールは 『postgres does not know where to find the server configuration file. You must specify the --config-file or -D invocation option or set the PGDATA environment variable.』 と届きます。 googleで検索したのですが、解決方法がわかりません…。 読みにくい文章で申し訳ないのですが、解決方法のご教授を お願いします。

  • cronで実行できない

    crontab -e  で記述をしたけれど動作しないので色々調べて毎分動くようにしてみたり色々試した物の動きません。現在以下のような記述になってます。どう直したらいいですか。OSはDebian sargeでcronでなく手で動作させると正常です。 SHELL=/bin/sh */1 * * * * /usr/bin/biffpop -c /root/.biffpoprc > /dev/null 2>&1

  • cronがうまく動作していないっぽいです。

    Fedora8の環境でcronの設定をしましたが思い通りに動いていないみたいなので教えてください。 まず、cronの設定は crontab -l SHELL=/usr/bin/perl */5 * * * * root /var/www/cgi-bin/test.cgi です。 このtest.cgiは、コマンドラインで./test.cgiとすると同じディレクトリ内のファイルに動作した時間とその旨のログを追記します。 perlで書いてあり、現在の属性は755 ftpuser:ftpuserとなっています。 とりあえず5分間隔で動作するように設定したつもりです。 しかし、いくら待てどもそのログファイルに追記されません。 ちなみに、/var/log/cron には CROND[3511]: (root) CMD (root /var/www/cgi-bin/test.cgi) なカンジで5分ごとにログが出ています。また、5分毎にメールが来ていて(Cronデーモンから?) /var/www/cgi-bin/test.cgi syntax OK と記載されています。 test.cgiからログを吐かせるには何が必要かご教授願います。

  • cronが動かない

    cron初心者なのでお願いいたします。 fedora5で以下のようなCronを動かそうとしています。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin HOME=/htdocs/program 45 18 * * * perl U9901.pl rootで作成し、/var/spool/cronのrootの実行権限は755になっています。 しかし実行されません。 編集後、crondは再起動しています。 どのような原因が考えられますでしょうか? 過去ログも見たのですが、それらしいものが無かったので質問させてください。 お願いします。

  • crontabの設定ができない(編集画面が出ない)

    CentOS5.2を使っています。 crontabの設定を行おうと、 # chkconfig --list crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off で確認後、$ crontab -e  としましたが、 no crontab for aaabbb - using an empty one と出て、編集ファイルが表示されません。 $ crontab -l  とすると no crontab for aaabbb と出、 # crontab -l  も    no crontab for root  となります。   念のため # chmod 777 /etc/crontab としてみましたが、結果は同じです。 $ less /etc/crontab でファイルを開くと ------------------------ SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly /etc/crontab (END) ---------------------- となっています。 Webで設定例を検索すると、no crontab for aaabbb - using an empty one の下に crontab: installing new crontab と出ると記載されているのですが、 私の場合、このような表示や動きは出ませんが、どのようにして crontab を設定していくのでしょうか。どうか宜しくお願いします。

  • バックアップの自動化に出てくる run-parts とは?

    Fedora Core2 にてバックアップの自動化を調べていて、crondを見つけたのですが、run-partsの意味が良くわかりません。コマンドなのかと思って調べてみましたが、よくわかりませんでした。run-partsとはどういった意味があるのでしょうか。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly

  • さくらVPSでcron指定はsh? php?

    これまで別のレンタルサーバで動作していたcronをさくらVPSでも動作させたいのですがうまくいきません。 ■これまで(レンタルサーバ) 1.cronにshファイルを指定 2.shファイル cd /var/www/★★ /usr/local/bin/php -d include_path='.:./●●.php ■今回(さくらVPS) /etc/crontab/ 05 7 * * * root /usr/bin/php /var/www/■■.sh ・どうしたら動作するでしょうか? ・/etc/crontab/の指定先は「phpファイル」「shファイル」の何れを指定するのでしょうか?