
私はこのクローンを持っています
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を見て、ルートユーザーの下でログを追跡します
tail -n300 -f /var/log/syslog
そして私は自分のクローンを見る
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です
エラーを確認するために、より詳細なリストをどこかに記録できるかもしれません
答え1
CRON は、アプリケーションの出力 (stdout、stderr) をローカル メールで配信します。Ubuntu には、どうやら最近のデフォルトでは MTA (メール転送エージェント) がインストールされていないようです。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>
もちろん、組み込みのシェル機能を使用して、ログ出力を専用のログ ファイルに書き込んだり、出力をファイルにパイプ/リダイレクトしたりすることもできます...