Quando tmpwatch cancella esattamente i file che inserisco in / tmp?


14

CentOS 6.x

Sono confuso quando vengono eliminati esattamente i file che inserisco in / tmp /.

/etc/cron.daily/tmpwatch ha il seguente:

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

La sezione nella riga 5 che legge -X '/tmp/hsperfdata_*' 10d /tmpmi porta a credere che i file che inserisco in / tmp / rimarranno per 10 giorni (supponendo che non siano bloccati durante la cancellazione ovviamente o che la directory sia montata su un file system tmpfs).

È corretto?

Risposte:


8

Su CentOS 6, sembra che tmpwatchstia basando la sua decisione di eliminare quando è stato effettuato l'ultimo accesso al file (atime). Se sono trascorsi 10 giorni (10 g) o più, verrà eliminato durante l' tmpwatchesecuzione.

Dalla tmpwatchpagina man:

    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.

Anche dalla pagina man:

    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

Su RHEL7 / CENTOS7, esiste un target systemd che viene eseguito quotidianamente: systemd-tmpfiles-clean.timer(per sostituire /etc/cron.daily/tmpwatch). I valori predefiniti sono entrambi OnBootSec=15mine OnUnitActiveSec=1d. Citando la manpage systemd.timer :

OnBootSec = definisce un timer relativo all'avvio della macchina.

OnUnitActiveSec = definisce un timer relativo all'ultima attivazione dell'unità in cui è stato attivato il timer.

Quindi / tmp ora viene pulito quotidianamente, all'incirca all'ora di avvio del sistema: quindi l'ora non è definita . Per distribuzioni di grandi dimensioni, non tutte le macchine virtuali eseguono la pulizia contemporaneamente, bello.

Per la cronologia, esegui:

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

Dove "Started Cleanup" in realtà significa "Completo".


Il tmpwatch ha una buona capacità di utilizzo fuser. La versione di systemd può farlo?
CMCDragonkai,

2
@CMCDragonkai, Nell'aprile 2015, Lennart Poettering (SystemD developper) ha dichiarato sulla mailing list systemd-devel : "non supportiamo questo [..] iterare attraverso / proc è semplicemente un peccato. [..] potremmo considerarlo [altrimenti ] " poi ha aggiunto " i controlli atime [..] dovrebbero essere pienamente sufficienti. Hai un caso in cui non lo sono? "
Franklin Piat,

Sì, ho fatto questa domanda.
CMCDragonkai,

1
@CMCDragonkai, stavo citando Lennart Poettering nella mailing list. Rispondi a lui (sulla lista)!
Franklin Piat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.