質問: 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です多分私はどこかでより詳細なリストをログに記録してエラーを確認できます
回答: 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> もちろん、ログ出力を専用のログファイルに書き込んだり、組み込みのシェル機能を使用して出力をファイルにパイプまたはリダイレクトしたりすることもできます...