crontabに追加 * * * * * myTask.sh 2>&1 >> /var/log/myTask.log
すると、すべてのログが次の場所に入力されます。myTask.log
ただし、代替の場所を提供できる方法があるかどうかを知りたい (たとえそれが/dev/null
.またはパーミッション) ジョブが影響を受けることはありません。
とにかくそれを行うことができるかどうか教えてください。
1 つのアイデアはsponge
、moreutils
パッケージから使用することです。つまり、sudo apt-get install moreutils
、次に:
* * * * * myTask.sh 2>&1 | sponge /var/log/myTask.log
プログラム スポンジはすべての入力を吸収し、最後にのみ書き込みます。これは、プログラムが終了するまで、ファイルのアクセス許可やその他のチェックが行われないことを意味します。欠点としては、sponge は入力をバッファリングするために必要な量のメモリを消費するため、プログラムが大量に印刷する場合、これは望ましくない可能性があります。