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?

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.

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".


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.