ログファイルを定期的に削除する方法は?

ログファイルを定期的に削除する方法は?

私はシェルスクリプトに初めて触れました。日付に基づいてディレクトリのログファイルを消去したいと思います。私はこのコードを集めました:

DIR1='/home/u01/app/oracle/servers/DIR1/logs'
DIR2='home/u01/app/oracle/servers/DIR2/logs'
DIR3='home/u01/app/oracle/servers/DIR3/logs'
Admin='/home/u01/app/oracle/fmw/admin_poc001/domain/domain_IAM_POC01/servers/AdminServer/logs'

echo "Enter the path"
read path
if [ $path == $DIR1 || $path == $DIR2 || $path == DIR3 || $path == $Admin ]
then
  echo  $path "check your path"

find $path -mtime +10 --# This line here "10" represents listing out the last 10 days logs
for i in *.log* *.out*
do
  cat /dev/null >"$i"
done
else
echo "Re-enter the Correct path"
read path
fi

以下のように入力すると、スクリプトは出力を提供します。

Enter your path :
/home/u01/app/oracle/servers/DIR1/logs

スクリプトが実行される日より前のすべてのログファイルが消去されます。

しかし、このスクリプトを実行すると、ログファイルを複数回消去できることを願っています。その他過去10日よりつまり、今日(2015年6月24日)を実行すると、2015年6月14日より前にログファイルを消去できます。

また、ディレクトリ全体のパスを入力するのではなく、変数に保存してその変数名のみを入力できますか?

たとえば、/home/u01/app/oracle/servers/DIR1/logs直接入力できるプログラムを見つけることではありません。ディレクトリ1これにより、フルパスなしでそのディレクトリに移動できます。

ベストアンサー1

logrotatecronで始まる「read man page」というツールがあり、man logrotateすでにログディレクトリをクリーンアップしてここに設定ファイルを追加できます。/etc/logrotate.d

おすすめ記事