CentOS/RHEL 7 では、tmpfiles は未使用のファイルを削除して /tmp または /var/tmp をクリーンアップします。この機能は「tmpwatch」と呼ばれていました CentOS/RHEL 6 では crond で起動していましたが、CentOS/RHEL 7 では systemd のタイマーで実現するようになりました。
現在、tmpfiles の詳細な機能は構成ファイルに記述されています:
/usr/lib/systemd/system/systemd-tmpfiles-clean.timer /usr/lib/systemd/system/systemd-tmpfiles-clean.service /usr/lib/tmpfiles.d/tmp.conf
簡単に言えば、利用可能な機能は次のとおりです:
- /tmp 内のファイル/ディレクトリの削除 10 日以上アクセスされていない (tmp.conf で定義) )
- /var/tmp のファイル/ディレクトリを削除する 30 日以上アクセスされていない (tmp.conf で定義) )
- 削除されないファイルがいくつかあります (tmp.conf で定義)
- 削除コマンドは「/usr/bin/systemd-tmpfiles –clean」です 「(systemd-tmpfiles-clean.service で定義 )
「アクセスされていません 」は atime を全てチェックして決定 /mtime /ctime ファイル/ディレクトリの.したがって、/tmp/ 内のファイルの atime/mtime/ctime のいずれかが 10 日より新しい場合、ファイルは削除されません。 /tmp/ 内のファイル/ディレクトリが 10 日以上経過しているように見えても tmpfiles によって削除されない場合は、以下のようなデバッグ オプションを指定してコマンドを手動で実行することで理由を確認できます:
# SYSTEMD_LOG_TARGET=console SYSTEMD_LOG_LEVEL=debug /usr/bin/systemd-tmpfiles --clean
たとえば、以下は、ディレクトリ「/tmp/latest」が atime のために削除できないことを意図しています。
# SYSTEMD_LOG_TARGET=console SYSTEMD_LOG_LEVEL=debug /usr/bin/systemd-tmpfiles --clean 2>&1 | grep latest Directory "/tmp/latest": access time Wed 2017-12-06 16:56:28.771577 IST is too new
構成ファイルの例
以下は、デフォルト設定の 3 つのサンプル構成ファイル (未編集) です。
# cat /usr/lib/systemd/system/systemd-tmpfiles-clean.timer [Unit] Description=Daily Cleanup of Temporary Directories Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) [Timer] OnBootSec=15min OnUnitActiveSec=1d
# cat /usr/lib/tmpfiles.d/tmp.conf # Clear tmp directories separately, to make them easier to override v /tmp 1777 root root 10d v /var/tmp 1777 root root 30d # Exclude namespace mountpoints created with PrivateTmp=yes x /tmp/systemd-private-%b-* X /tmp/systemd-private-%b-*/tmp x /var/tmp/systemd-private-%b-* X /var/tmp/systemd-private-%b-*/tmp
# cat /usr/lib/systemd/system/systemd-tmpfiles-clean.service [Unit] Description=Cleanup of Temporary Directories Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) DefaultDependencies=no Conflicts=shutdown.target After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target time-sync.target Before=shutdown.target [Service] Type=oneshot ExecStart=/usr/bin/systemd-tmpfiles --clean IOSchedulingClass=idle
CentOS / RHEL 6,7 :/tmp ディレクトリ内のファイルが定期的に削除される理由
CentOS / RHEL 5,6 :レスキュー モードから GRUB ローダーを再インストールする方法