Closed2

Linux一定時刻経過したログファイルの削除方法について

otokunaga2otokunaga2

tmpwatchはRedHat系のディストリビューションで提供されている。
Ubuntuについてはtmpreaperというパッケージで提供されている。
以下、tmpwatchについての使い方を以下の文献より抜粋。

tmpwatchの使い方

-tを付けるとドライランできる。

/usr/sbin/tmpwatch -tumcv 72 /home/*/logs/

https://spring-mt.hatenablog.com/entry/2017/09/21/184055

tmpreaperの使い方

tmpreaperをインストールしてみたが、以下のような設定ファイルがあったりと、個人的にtmpwatchよりも利用方法が煩雑に思えた。

/etc/tmpreaper.con
# 1. 直前の文章を読み、理解した上で SHOWWARNING をコメントアウトする
# SHOWWARNING=true

...

# 2. "/var/tmp/." を追加 (不要であれば "/tmp/." の記述は削除)
TMPREAPER_DIRS='/tmp/. /var/tmp/.'

# 3. 5日以上アクセスがないと削除(デフォルトは7日)
TMPREAPER_TIME='5d'
otokunaga2otokunaga2

結果として、今回は用途が限られていたため、以下のようなShellScriptで対応した。
findした結果をwhile read lineする箇所の詳細については、
以下の記事を参考にしながら実装した。
https://future-architect.github.io/articles/20210331/

bash
#!/bin/bash
echo "Start deleteing outedated file"
#XXXディレクトリ以下のデータで一定時刻以上(100日)すぎたものを削除する
count=0
find XXX -type f -mtime +100 | while read line
  do
    echo "file name $line"
    rm -f $line
    let ++count
  done
echo "File deleted the number is ${count}"
このスクラップは2022/02/05にクローズされました