/tmp/配下が削除されるロジックとしてはデフォルトで以下のような設定がある
(RHEL7のデフォルト設定)
/tmp/と/var/tmp/が自動的に削除される定義が記載されている設定ファイル
/usr/lib/tmpfiles.d/tmp.conf
設定内容としては以下となる。
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d
削除されるロジックとしては以下の通りである。
①systemd-tmpfiles-clean.timer
enable
自動削除を実行するデーモンが有効化されていること
②/usr/lib/systemd/system/systemd-tmpfiles-clean.timer
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
上記の意味
OS起動から15分後
1日1回
②の設定内容によりsystemd-tmpfiles-clean.serviceが動作し、/tmp/と/var/tmp/配下を/usr/lib/tmpfiles.d/tmp.confの設定内容に応じて削除している
今回の案件の中で、個別に/tmp/配下にディレクトリを上記ロジックとは別の設定に応じた削除を実施して欲しいとの要件があり、以下を実装することにより実現した。
/usr/lib/tmpfiles.d/new.conf
v /tmp/hogehoge/delete 0755 root root 1d
上記設定により、/tmp/hogehoge/delete1dayのディレクトリ配下が1日で削除される
※注意
1dと設定されているが、ファイルの配置タイミングと削除するサービス軌道により前日分が削除された時間により最大で1日と23時間59分の差が発生する。
例えば、日時で起動するsystemd-tmpfiles-clean.serviceが起動されたあとに/tmp/hogehoge/delete1day/配下にファイルがアップロードされたケースの時、
翌日のsystemd-tmpfiles-clean.serviceが起動した際には1d経過したとは見なされないのでファイルの削除は行われないことに注意する。