[Linux]CentOS7のtmpフォルダの削除処理に関して

一定期間で削除される、という認識だけしていて細かいこと調べてなかった。
いくつか調べたことをまとめる。

削除の仕組みに関して

CentOS6まではtmpwatchが削除処理を行っていたが、CentOS7からはsystemd-tmpfilesが削除処理を実行している。
下記のコマンドを使用することで次回の実行タイミングを確認することができる。

# systemctl list-timers
NEXT                         LEFT     LAST                         PASSED    UNIT                         ACTIVATES
Thu 2019-02-21 11:44:42 GMT  23h left Wed 2019-02-20 11:44:42 GMT  42min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service

1 timers listed.
Pass --all to see loaded but inactive timers, too.

削除対象ファイルの条件に関して

tmpfilesではファイルの「atime/mtime/ctime」の値全てをチェックして、その日時が期限を過ぎているかどうかを判定している。
そして「atime/mtime/ctime」の値(それぞれ、「最終アクセス時刻」「最終更新時刻」「最終ステータス変更時刻」)はlsコマンドの下記オプションで参照することができる。
※ctimeはinodeが変更された時刻。よってファイル内容ではなく、chownchmodなどファイルの属性情報が更新された時刻になる。

# 最終アクセス時刻(atime)
$ ls -lu

# 最終更新時刻(mtime)
$ ls -l

# 最終ステータス変更時刻(ctime)
$ ls -lc

チェック期限の設定

tmpfilesが削除する対象や削除のチェック期限は下記のファイルに定義がされている。

  • /usr/lib/tmpfiles.d/*.conf
  • /etc/tmpfiles.d/*.conf

/etc/tmpfiles.dにある設定ファイルは、/usr/lib/tmpfiles.dにある同名ファイルでオーバーライドされる。

参考

lsコマンドで表示する時刻を変える

7.10. Systemd の利用と設定

Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法

tmpwatch(CentOS6まで)とsystemd-tmpfiles(CentOS7)の挙動の違い

cron(crontab)の代わりにsystemdのtimerを使う

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ten + seventeen =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください