Kapan tepatnya tmpwatch menghapus file yang saya tempatkan di / tmp?

14

CentOS 6.x

Saya bingung kapan tepatnya file yang saya tempatkan di / tmp / dihapus.

/etc/cron.daily/tmpwatch memiliki yang berikut:

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
        -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
        -X '/tmp/hsperfdata_*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
        /usr/sbin/tmpwatch "$flags" -f 30d "$d"
    fi
done

Bagian pada baris 5 yang berbunyi -X '/tmp/hsperfdata_*' 10d /tmpmembuat saya percaya bahwa file yang saya tempatkan di / tmp / akan tetap selama 10 hari (dengan asumsi mereka tidak terkunci selama penghapusan tentu saja atau direktori dipasang pada sistem file tmpfs).

Apakah itu benar?

Mike B
sumber

Jawaban:

8

Pada CentOS 6, tampaknya tmpwatchmendasarkan keputusan untuk menghapus ketika file terakhir diakses (atime). Jika sudah 10 hari (10d) atau lebih maka akan dihapus saat tmpwatchdijalankan.

Dari tmpwatchhalaman manual:

    By  default,  tmpwatch  dates  files  by their atime (access time), not 
    their mtime (modification time). If files aren't being removed when 
    ls -l implies they should be, use ls -u to examine their atime to see if 
    that explains the problem.

Juga dari halaman manual:

    The time parameter defines the threshold for removing files.  If the
    file has not been accessed for time, the file is removed.  The time 
    argument is a number with an optional single-character suffix specifying 
    the units: m for minutes, h for hours, d for days.  If no  suffix  is 
    specified, time is in hours.
slm
sumber
6

Pada RHEL7 / CENTOS7, ada target systemd yang berjalan setiap hari: systemd-tmpfiles-clean.timer(untuk mengganti /etc/cron.daily/tmpwatch). Nilai default keduanya OnBootSec=15mindan OnUnitActiveSec=1d. Mengutip systemd.timer manpage:

OnBootSec = mendefinisikan timer relatif ketika mesin di-boot.

OnUnitActiveSec = mendefinisikan penghitung waktu relatif ke saat unit pengaktifan penghitung waktu terakhir diaktifkan.

Jadi / tmp sekarang dibersihkan setiap hari, kira-kira pada jam ketika sistem boot: sehingga waktu tidak ditentukan . Untuk penyebaran besar, tidak semua mesin virtual melakukan pembersihan secara bersamaan, bagus.

Untuk sejarah, jalankan:

$ journalctl  -u systemd-tmpfiles-clean
Mar 12 21:44:17 c7.klabs.be systemd[1]: Starting Cleanup of Temporary Directories...
Mar 12 21:44:18 c7.klabs.be systemd[1]: Started Cleanup of Temporary Directories.

Di mana "Memulai Pembersihan" sebenarnya berarti "Lengkap".

Franklin Piat
sumber
Tmpwatch memiliki kemampuan penggunaan yang bagus fuser. Bisakah versi systemd melakukan itu?
CMCDragonkai
2
@CMCDragonkai, Pada April 2015, Lennart Poettering (SystemD Developper) mengatakan pada mailing list systemd-devel : "kami tidak mendukung ini [..] mengulang melalui / proc terlalu buruk. [..] kita mungkin mempertimbangkannya [jika tidak ] " lalu dia menambahkan " atime cheque [..] harus cukup memadai. Apakah Anda memiliki kasing di tempat yang tidak ada? "
Franklin Piat
Ya saya menanyakan pertanyaan itu.
CMCDragonkai
1
@ CMCDragonkai, saya mengutip Lennart Poettering di milis. Balas dia (ada di daftar)!
Franklin Piat