-1
私はファイルにリダイレクトされた出力を常に出力するbashスクリプトを持っていますが、私がやっていることはリダイレクトされたファイルを回転させ、それをスクリプトとリダイレクト:スクリプトが実行されている間にリダイレクトされたパスを変更する
.
somecode
.
su - username -c "command >> /path/to/directory/output.txt" &
.
.
code continues..
以下は、私が作成しようとしているのcrontabです:
cd /path/to/directory/
timestamp=`date "+%Y%m%d"`
mv ./output.txt ./logs/output.txt_$timestamp
touch output.txt
chmod 757 ./output.txt
gzip ./logs/output.txt_$timestamp
find ./logs/output.txt* -type f -mtime +2 | xargs rm
するか、この1つはまた、仕事をするために失敗しました:
timestamp=`date "+%Y%m%d"`
cp ./output.txt ./logs/output.txt_$timestamp
echo "" > ./output.txt
gzip ./logs/output.txt_$timestamp
最初のコードでは
が元のスクリプトに失敗して動作しなくなり、2番目のスクリプトではoutput.txtファイルが消去されません。
スクリプトを動作させている間に行う方法はありますか?注意;私はUnix Solarisを実行しています。
ありがとうございます。
それはlogrotateのを持っています役立つかもしれませんか? – 123
いいえそれはない – user104787
私が見つけることができた唯一の解決策は、すべてのスクリプトを停止してからスクリプトを開始した後にローテーションを行うことでした、実行中に出力パスを変更する方法があった方が良いでしょうしかし、このようにしても、何かがダウンした場合にはスクリプトを送信するので、回転がまだ許容されている間に10分のダウンタイムが発生します。 ありがとうございました。 – user104787