スクリプトの実行中にリダイレクトパスを変更する

スクリプトの実行中にリダイレクトパスを変更する

ファイルにリダイレクトする場所から常に出力を提供するスクリプトがあります。私がやりたいことは、リダイレクトされたファイルを回転させることです。以下は、スクリプトを起動してリダイレクトする場所です。

.
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

あるいは、これも操作を実行しません。

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を実行しています。

よろしくお願いします。

ベストアンサー1

これは通常、以下を追加することによって行われます。ため息をつくコマンドハンドラの再起動別のコマンド(通常logrotate)の後にファイルを移動します。 *nix オペレーティング・システムでは、ファイルの作成中にファイルを移動できます。 (私の考えでは、ファイルはまだ同じファイルシステムに存在する必要があることに注意する必要があります。)追加の行はファイルの新しい場所に追加されます。

おすすめ記事