16

crontab に次のエントリがあります。

0 5 * * * /bin/bash -l -c 'export RAILS_ENV=my_env; cd /my_folder; ./script/my_script.rb 2>&1 > ./log/my_log.log'

この結果、./script/my_script.rbinの出力を受け取っています./log/my_log.log。この動作は望ましいものです。興味深いのは、ローカル メールでも出力を受信して​​いることです。スクリプトの出力がメールでどのようにキャプチャされているのか疑問に思っています。出力をログ ファイルにリダイレクトしているので、cron ジョブには出力がなく、cron ジョブの実行時にメールを受信しないことが予想されます。メールがどのように出力を取得できるかについて、誰かが光を当てることができ./script/my_script.rbますか?

4

3 に答える 3

27

リダイレクトの順序が正しくありません。Stderr はファイルにリダイレクトされていませんが、stdout に送信されています。それはあなたがあなたのメールで受け取っているに違いありません。

cron ジョブを次のように変更して、リダイレクトを修正します。

0 5 * * * /bin/bash -l -c
'export RAILS_ENV=my_env;
cd /my_folder;
./script/my_script.rb > ./log/my_log.log 2>&1'
于 2013-02-20T15:07:41.427 に答える
2

と交換2>&1してみてください> ./log/my_log.log

于 2013-02-20T15:06:35.960 に答える
1

この回答から判断すると、リダイレクトの順序を切り替えるだけです。

0 5 * * * /bin/bash -l -c 'export RAILS_ENV=my_env; cd /my_folder; ./script/my_script.rb > ./log/my_log.log 2>&1'
于 2013-02-20T15:18:16.323 に答える