一定期間で削除される、という認識だけしていて細かいこと調べてなかった。
いくつか調べたことをまとめる。
削除の仕組みに関して
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
が変更された時刻。よってファイル内容ではなく、chown
やchmod
などファイルの属性情報が更新された時刻になる。
# 最終アクセス時刻(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
にある同名ファイルでオーバーライドされる。
参考
Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法