Tmpwatch / tmp içine yerleştirdiğim dosyaları tam olarak ne zaman temizliyor?


14

CentOS 6.x

/ Tmp / içine yerleştirdiğim dosyalar tam olarak silindiğinde kafam karıştı.

/etc/cron.daily/tmpwatch aşağıdakilere sahiptir:

#! /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

5. satırdaki bölüm, -X '/tmp/hsperfdata_*' 10d /tmp/ tmp / içine yerleştirdiğim dosyaların 10 gün boyunca kalacağına (elbette silme sırasında kilitlenmediklerini veya dizinin bir tmpfs dosya sistemine monte edildiğini varsayarak) inanmamı sağlıyor.

Bu doğru mu?

Yanıtlar:


8

CentOS 6'da, tmpwatchbir dosyaya en son erişildiğinde (atime) silme kararını temel alıyor gibi görünüyor . 10 gün (10d) veya daha uzun bir süre geçtiyse, tmpwatchçalıştırıldığında silinir .

Gönderen tmpwatchadam sayfası:

    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.

Ayrıca man sayfasından:

    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

RHEL7 / CENTOS7'de günlük olarak çalışan bir systemd hedefi vardır: systemd-tmpfiles-clean.timer(değiştirmek için /etc/cron.daily/tmpwatch). Varsayılan değerler hem OnBootSec=15minve'dir OnUnitActiveSec=1d. Alıntı systemd.timer manpage:

OnBootSec = makinenin başlatıldığı zamana göre bir zamanlayıcı tanımlar.

OnUnitActiveSec = zamanlayıcının en son etkinleştirildiği zamana göre bir zamanlayıcı tanımlar.

Böylece / tmp artık günlük olarak, sistem önyükleme sırasında kabaca saatte temizleniyor: böylece zaman tanımsız . Büyük dağıtımlarda, tüm sanal makineler temizlemeyi aynı anda gerçekleştirmez, güzel.

Tarih için şunu çalıştırın:

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

"Başlatılan Temizleme" aslında "Tamamlandı" anlamına gelir.


Tmpwatch güzel bir kullanma yeteneğine sahiptir fuser. Systemd sürümü bunu yapabilir mi?
CMCDragonkai

2
@CMCDragonkai, Lennart Poettering (SystemD geliştiricisi) Nisan 2015'te systemd-devel posta listesinde şunları söyledi : "Bunu desteklemiyoruz [..] / proc üzerinden yineleme çok kötü. [..] ] " sonra o ekledi " atime kontrolleri [..] tamamen yeterli olmalıdır. Olmadıkları bir durumda var mı? "
Franklin Piat

Evet, bu soruyu sordum.
CMCDragonkai

1
@CMCDragonkai, posta listesinde Lennart Poettering'den alıntı yapıyordum. Ona cevap verin (listede)!
Franklin Piat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.