2016-11-01 8 views
-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を実行しています。

ありがとうございます。

+0

それはlogrotateのを持っています役立つかもしれませんか? – 123

+0

いいえそれはない – user104787

+0

私が見つけることができた唯一の解決策は、すべてのスクリプトを停止してからスクリプトを開始した後にローテーションを行うことでした、実行中に出力パスを変更する方法があった方が良いでしょうしかし、このようにしても、何かがダウンした場合にはスクリプトを送信するので、回転がまだ許容されている間に10分のダウンタイムが発生します。 ありがとうございました。 – user104787

答えて

関連する問題