シェルスクリプト------------定期的にログファイルをクリーンアップする

対象要件:

2種類のマシンが300以上あります。2種類のマシンのログファイルを自動的にクリーンアップするスクリプトを記述します。AマシンとBマシンのログストレージパスは同じですが、Bマシンのログファイルストレージパスは一致する必要があります(ログと他のファイルは削除できません。一致する場合は .logを使用してください

タイプA:/ opt / cloud / log /(7日前のログの削除)
タイプB:/ opt / cloud / instances /(15日前のログの削除)

要塞マシンでの操作を考慮する必要はなく、シェルスクリプトを記述するだけです。

ステップ分析:

  1. AマシンとBマシンの両方で実行できるものを作成する必要があります。
  2. タイプAまたはBのどちらのマシンであるかを判別するには、判断ディレクトリー/ opt / cloud / logまたは/ opt / cloud / instancesディレクトリーを使用して、どのタイプのマシンかを判別できます。
  3. クラスAのマシンの場合は直接見つけることができますが、クラスBのマシンは-name "* .log"を見つける必要があるため、少し面倒です。
  4. ログファイルを見つけたら、それをrmに渡して削除します。
#!/bin/bash
dir1=/opt/cloud/instances/
dir2=/opt/cloud/log/
if [ -d $dir1 ]
then
      find $dir1 -type f -name "*.log" -mtime +15 |xargs rm -f
      elif [ -d $dir2 ]
      then
           find $dir2 -type f -mtime +7 |xargs rm -f
fi

ノート:

##### mtimeパラメータは次のように理解する必要があります#####

-mtime nファイルの変更時刻に従ってファイルを検索します。nは整数です。
nはファイル変更時間の距離がn日であることを意味し、-nはファイル変更時間の距離がn日以内であることを意味し、+ nはファイル変更時間の距離がn日前であることを意味します

例えば:

  • -mtime 0は、ファイルの変更時刻が現在のファイルから0日であることを意味します。つまり、ファイルは現在の時刻から1日(24時間)未満です。
  • mtime 1は、ファイルの変更時刻が現在の時刻から1日離れていることを意味します。つまり、ファイルは現在の時刻から1日(24時間から48時間)離れています。
  • mtime +1は、変更時刻が1日を超えるファイル、つまり現在の時刻から2日(48時間)離れたファイルを意味します
  • mtime -1は、ファイルの変更時刻が1日未満であること、つまり、ファイルが現在の時刻から1日(24時間)以内であることを意味します。

#### xargs ####
xargsは、コマンドにパラメーターを渡すためのフィルターと、複数のコマンドを組み合わせるためのツールです。

  • xargsは、パイプまたは標準入力(stdin)データをコマンドラインパラメーターに変換でき、ファイル出力からデータを取得することもできます。
  • xargsは、単一行または複数行のテキスト入力を、複数行から単一行、単一行から複数​​行などの他の形式に変換することもできます。
  • xargsは、1つのコマンドの出力をキャプチャして別のコマンドに渡すことができる強力なコマンドです。

このコマンドを使用できる主な理由は、多くのコマンドがパラメーターを転送するための "|"パイプをサポートしていないためですが、日常的な作業では、xargsコマンドがあります。
例:
find / sbin -perm +700 | ls -l#
#このコマンドは間違っていますfind / sbin -perm +700 | xargs ls -l ##このコマンドは正しいです

おすすめ

転載: blog.csdn.net/weixin_48190875/article/details/108240289