web-dev-qa-db-ja.com

cronジョブでstderrをファイルにリダイレクトする方法

私のcrontabに次のように設定されたcronジョブがあります。

*/1 * * * *  Sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt

StdoutをsensorLog.txtに入れ、生成するすべてのstderrを電子メールに入れます。

Stdoutとstderrの両方をsensorLog.txtに入れたいので、1>&2をcrontabに追加しました。これにより、stderrがstdoutと同じ場所に入るようになっています。これは次のようになります。

*/1 * * * *  Sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt 1>&2

これで、stdoutとstderrの両方が電子メールに入れられ、ファイルには何も追加されません。これは私が達成しようとしていることの反対です。

Stdoutとstderrの両方をファイルにリダイレクトするにはどうすればよいですか?

16
PortMan

それは逆です:

*/1 * * * *  Sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt 2>&1

2>&1は、標準エラー(2)を標準出力(1)にリダイレクトします。標準出力(1)は、ログファイルにリダイレクトされました。したがって、最後に、stderrとstdoutの両方がsensorLog.txt

31
mauro