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


14

CentOS 6.x

Estou confuso quando exatamente os arquivos que 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 /tmpme leva a acreditar que os arquivos que eu coloco em / tmp / permanecerão por 10 dias (supondo que não estejam bloqueados durante a exclusão, é claro, ou se o diretório está montado em um sistema de arquivos tmpfs).

Isso está correto?

Respostas:


8

No CentOS 6, parece que tmpwatchestá baseando sua decisão de excluir quando um arquivo foi acessado pela última vez (atime). Se já se passaram 10 dias (10d) ou mais, ele será excluído quando tmpwatchexecutado.

Na tmpwatchpágina do 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.

Também na página do 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

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 ambos OnBootSec=15mine OnUnitActiveSec=1d. Citando a página de manual do systemd.timer :

OnBootSec = define um cronômetro relativo a quando a máquina foi inicializada.

OnUnitActiveSec = define um cronômetro relativo a quando a unidade que o cronômetro está ativando foi ativada pela última vez.

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

Para 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 "Limpeza iniciada" significa realmente "Concluído".


O tmpwatch tem uma boa capacidade de uso fuser. A versão systemd pode fazer isso?
precisa saber é o seguinte

2
@CMCDragonkai, Em abril de 2015, Lennart Poettering (desenvolvedor do SystemD) disse na lista de discussão systemd-devel : "não apoiamos essa [..] iteração através de / proc é simplesmente muito ruim. [..] podemos considerá-la [caso contrário ] " então ele adicionou " atime checks [..] deve ser totalmente suficiente. Você tem um caso em que eles não estão? "
precisa

Sim, eu fiz essa pergunta.
precisa saber é o seguinte

1
@CMCDragonkai, eu estava citando Lennart Poettering na lista de discussão. Responda a ele (na lista)!
Franklin Piat
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.