Di CentOS/RHEL 7, tmpfiles membersihkan /tmp atau /var/tmp dengan menghapus file yang tidak digunakan. Fungsi ini disebut “tmpwatch ” di CentOS/RHEL 6 yang dipanggil oleh crond, namun sekarang direalisasikan oleh timer systemd pada CentOS/RHEL 7.
Saat ini fungsi rinci tmpfiles dijelaskan dalam file konfigurasi:
/usr/lib/systemd/system/systemd-tmpfiles-clean.timer /usr/lib/systemd/system/systemd-tmpfiles-clean.service /usr/lib/tmpfiles.d/tmp.conf
Singkatnya, fungsi yang tersedia adalah:
- menghapus file/direktori di /tmp tidak diakses lebih dari 10 hari (didefinisikan dalam tmp.conf )
- menghapus file/direktori di /var/tmp tidak diakses lebih dari 30 hari (didefinisikan dalam tmp.conf )
- ada beberapa file yang tidak akan dihapus (didefinisikan di tmp.conf)
- perintah penghapusannya adalah “/usr/bin/systemd-tmpfiles –clean “(didefinisikan dalam systemd-tmpfiles-clean.service )
“tidak dapat diakses ” diputuskan dengan mencentang semua waktu /mtime /waktu dari file/direktori. Jadi, jika salah satu dari atime/mtime/ctime dari file di /tmp/ lebih baru dari 10 hari, file tersebut tidak akan dihapus. Jika file/direktori di /tmp/ tidak dihapus oleh tmpfiles meskipun tampaknya lebih dari 10 hari, alasannya dapat diperiksa dengan menjalankan perintah dengan opsi debug seperti di bawah ini secara manual:
# SYSTEMD_LOG_TARGET=console SYSTEMD_LOG_LEVEL=debug /usr/bin/systemd-tmpfiles --clean
Misalnya, di bawah ini bermaksud agar direktori “/tmp/latest” tidak dapat dihapus karena waktunya.
# 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
Contoh file konfigurasi
Di bawah ini adalah 3 contoh file konfigurasi (belum diedit) dengan pengaturan defaultnya.
# 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