Quando exatamente o tmpwatch limpa os arquivos que eu coloco em / tmp?

14

CentOS 6.x

Estou confuso quando exatamente os arquivos que eu coloco em / tmp / são excluídos.

/etc/cron.daily/tmpwatch tem o seguinte:

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

A seção na linha 5 que lê -X '/tmp/hsperfdata_*' 10d /tmp me leva a acreditar que os arquivos que eu coloco em / tmp / permanecerão por 10 dias (supondo que eles não estejam bloqueados durante a exclusão, é claro, ou que o diretório esteja montado em um arquivo tmpfs sistema).

Isso está correto?

    
por Mike B 08.03.2014 / 18:30

2 respostas

8

No CentOS 6, parece que tmpwatch está baseando sua decisão de excluir quando um arquivo foi acessado pela última vez (atime). Se tiver sido 10 dias (10d) ou mais, será excluído quando tmpwatch for executado.

Na página tmpwatch 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.

Também na página 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.
    
por 09.03.2014 / 01:05
6

No RHEL7 / CENTOS7, há um destino systemd que é executado diariamente: systemd-tmpfiles-clean.timer (para substituir /etc/cron.daily/tmpwatch ). Os valores padrão são OnBootSec=15min e OnUnitActiveSec=1d . Citando systemd.timer página de manual:

OnBootSec= defines a timer relative to when the machine was booted up.

OnUnitActiveSec= defines a timer relative to when the unit the timer is activating was last activated.

Assim, o / tmp agora é limpo diariamente, aproximadamente na hora em que o sistema é inicializado: , de modo que o tempo é indefinido . Para grandes implantações, nem todas as máquinas virtuais executam a limpeza simultaneamente, legal.

Para o histórico, execute:

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

Onde "Started Cleanup" realmente significa "Completo".

    
por 13.03.2015 / 13:37

Tags