web-dev-qa-db-ja.com

crontabが実行されないのはなぜですか

私はこのcronを持っています

38 * * * * /bin/bash -l -c 'cd /var/Rails/site/releases/20120705144335 && script/Rails runner -e qa '\''Play.load_lists'\'''

別のユーザーの下にこのcronがあるので、ユーザーをデプロイに切り替えます

Sudo su deploy
crontab -e

そして、私は自分のcronを表示してから、ログをrootユーザーの下にテールします

tail -n300 -f /var/log/syslog

そして私は私のcronを見ます

Jul  5 11:38:01 ip-10-70-75-234 CRON[4971]: (deploy) CMD (/bin/bash -l -c 'cd /var/Rails/site/releases/20120705144335 && script/Rails runner -e qa '\''Play.load_lists'\''')
Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

しかし、cronが実行されていないか、権限の問題があります...コンソールでタスクを実行すると、うまく機能しますが、cronでは機能しません...

これはUbuntu 12.04 LTSです

多分私はどこかでより詳細なリストをログに記録してエラーを確認できます

12
Matt Elhotiby

CRONは、ローカルメールを介してアプリケーションの出力(stdout、stderr)を配信します。最近、UbuntuにはデフォルトでMTA(Mail Transfer Agent)がインストールされていません。 CRONは、配信が失敗するたびにシステムログファイルに通知を出力します。

Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

MTAをインストールできます。 postfix、内部(ローカル)での使用のみ。

aptitude install postfix

インストール中に、どのデフォルト構成を使用するか尋ねられます。 Local only構成。

その後、CRONによって実行されたアプリケーションの出力を使用して見つけることができます

tail -f /var/mail/<your_username>

もちろん、ログ出力を専用のログファイルに書き込んだり、組み込みのシェル機能を使用して出力をファイルにパイプまたはリダイレクトしたりすることもできます...

17
moooeeeep