(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【RHEL】systemd-tmpfiles-clean.timerで不要ファイルを削除する流れ

スポンサーリンク

はじめに

Linuxには systemd-tmpfiles-cleanと呼ばれるタイマー機能があり、一定期間更新が入っていないファイルを削除することが可能です。本記事では任意のディレクトリに対してこのタイマー機能でファイルを削除する機構を利用する流れについて記載しました。

環境情報
  • Red Hat Enterprise Linux Server 7.5

基本情報の確認

以下で基本設定が確認できます。

# systemctl cat systemd-tmpfiles-clean.timer

Timer欄にあるように「起動の15分後&毎日1回」不要ファイル削除のチェックが入ります。

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

以下でステータスは確認できます。

# systemctl status systemd-tmpfiles-clean.timer
▒▒ systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.timer; static; vendor preset: disabled)
   Active: active (waiting) since xx
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)

以下のようにタイマーが次回がいつ動くのか?前回いつ動いたのか?が確認できます。

# systemctl list-timers
NEXT                         LEFT     LAST                         PASSED       UNIT                         ACTIVATES
Sun 2021-01-31 10:30:33 JST  19h left Sat 2021-01-30 10:30:33 JST  4h 26min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service

不要ファイル削除の設定および動作確認

/etc/tmpfiles.d/ディレクトリの配下に以下のようなファイルを作成すれば

# cat /etc/tmpfiles.d/test.conf
d /root/trashdir 0700 root root 30s

/root/trashdirというディレクトリ配下にある最終更新が30秒以上行われていないファイルをtimerが起動時に削除されます。

試しに以下のようにファイル群を作成して

# ls /root/trashdir
a  b  c

以下のコマンドで手動でタイマーをキックすると作成後30秒以上たっているファイルは削除されます。

# systemd-tmpfiles --clean /etc/tmpfiles.d/testt.conf

同タイマーはデフォルトでは24時間後にも日次で削除処理が行われます。

終わりに

今回はテスト用に短い時間としましたが、例えば一時領域用のディレクトリに30日更新がないファイルは削除するといった利用を行えば、運用の手間をかけずに不要ファイルを削除できます。
以上、ご参考になれば幸いです。