Quando o / tmp é limpo?

143

Estou começando a colocar vários arquivos /tmpe me perguntei sobre as regras para excluí-los.

Imagino que seja diferente para diferentes distribuições e estou particularmente interessado nas versões de desktop do Ubuntu e Fedora.

Mas uma boa maneira geral de descobrir seria uma grande coisa.

Melhor ainda seria uma boa maneira geral de controlá-lo! (Algo como 'todos os dias às três da manhã, exclua todos os /tmparquivos com mais de 60 dias, mas não limpe o diretório na reinicialização')

John Lawrence Aspden
fonte
Related: askubuntu.com/questions/20783/…
Ciro Santilli escreveu uma avaliação a

Respostas:

155

Isso depende da sua distribuição. Em alguns sistemas, ele é excluído apenas quando inicializado, outros têm cronjobs executando a exclusão de itens anteriores a n horas.

  • Em sistemas do tipo Debian: na inicialização (as regras são definidas em /etc/default/rcS).
  • Em sistemas do tipo RedHat: por idade (RHEL6 era /etc/cron.daily/tmpwatch; RHEL7 e RedHat com systemd está configurado /usr/lib/tmpfiles.d/tmp.conf, chamado por systemd-tmpfiles-clean.service).
  • No Gentoo /etc/conf.d/bootmisc.
kba
fonte
19
E, independentemente de quando isso acontecer, o único momento seguro é geralmente na inicialização, logo após a montagem, pois os processos em execução podem ter arquivos bloqueados lá, e eles não devem ser excluídos.
adaptr
Também existem pacotes disponíveis que podem removê-los periodicamente.
Samuel Edwin Ward
2
Nos sistemas do tipo RedHat com systemd (centos7 / rhel7), ele é configurado em /usr/lib/tmpfiles.d/tmp.conf. É chamado pelo alvo do systemd systemd-tmpfiles-clean.service.
31815 Franklin Piat #
11
No Debian legado, você pode considerar o tmpreaperpacote, sua versão bifurcada tmpwatch.
Věroš K.
Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Boris
24

No CentOS (e eu assumo o Fedora), existe um trabalho no /etc/cron.daily chamado tmpwatch. Isso é executado /usr/sbin/tmpwatch, o que excluirá os arquivos que não foram acessados ​​no número especificado de horas, ou seja, o comportamento padrão é examinar atimeo arquivo para avaliar se ele foi usado recentemente.

http://linux.die.net/man/8/tmpwatch

Outras distribuições (e instalações) podem ter / tmp montado como tmpfs, que é um sistema de arquivos na memória. Isso será limpo na inicialização.

cjc
fonte
Eu não tenho isso no CentOS 7.4.
21818 Kevin Lemaire
@KevinLemaire A funcionalidade foi movida para um serviço systemd. lists.centos.org/pipermail/centos/2014-October/147155.html
cjc
Se você não encontrar o arquivo tmpwatch, você pode baixar tmpwatch usandoyum install tmpwatch
Ng Sek Longo
Posso obter o tmpwatch em outras distros? Parece incrível. Estou na distribuição baseada em debian
Jonathan
sudo find /tmp -type f -atime +10 -deleteexcluirá arquivos tmp que não foram acessados ​​em 10 dias, use com cuidado
Jonathan
13

No Ubuntu 11.10 que estou usando, há um script inicial/etc/init/mounted-tmp.conf . O começo diz o seguinte:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

Você pode ler com mais detalhes, no entanto, em geral, /tmpé limpo quando montado ou /usrmontado. Isso acontece regularmente na inicialização, portanto, essa /tmplimpeza é executada em cada inicialização.

No /etc/default/rcSseu TMPTIMEconjunto, o qual é usado no script init acima para alimentar os dois findcomandos ao final - basicamente controlando a exclusão do arquivo com base em seus tempos (modificado, alterado, acessado).

icyrock.com
fonte
5

No RHEL 6.2, os arquivos em / tmp são excluídos pelo tmpwatch se não forem acessados ​​em 10 dias.

O arquivo /etc/cron.daily/tmpwatch define a maneira como o tmpwatch é chamado.

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

Os argumentos -x são arquivos a serem excluídos. O segundo ao último argumento é o tempo de espera após o último horário acessado. O último argumento é o diretório a ser examinado.

johnjamesmiller
fonte
5

A partir do Fedora 18, ele /tmpé montado tmpfs(por exemplo, RAM) por padrão e, portanto, apagado ao desligar.

Esse comportamento pode ser desabilitado através da emissão systemctl mask tmp.mounte reinicialização (e reativado pela emissão systemctl unmask tmp.mounte reinicialização) e, em seguida /tmp, será montado no /sistema de arquivos e pode ser controlado pelas /usr/lib/tmpfiles.d/tmp.confconfigurações.

Veja http://fedoraproject.org/wiki/Features/tmp-on-tmpfs e man tmpfiles.dpara mais detalhes sobre cada caso.

Skippy le Grand Gourou
fonte
3

No openSUSE 13.2, o comportamento de limpeza pode ser controlado com a seguinte variável no sysconfig.

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

Você pode modificar essas variáveis ​​(o uso de cada variável também pode ser encontrado lá)

  1. Edite o /etc/sysconfig/cronarquivo manualmente na linha de comando.
  2. Abra o Yast e navegue para System -> / etc / sysconfig Editor -> System -> Cron
leodream
fonte
2

Melhor ainda seria uma boa maneira geral de controlá-lo! (Algo como 'todos os dias às 3 da manhã, exclua todos os arquivos / tmp com mais de 60 dias, mas não limpe o diretório na reinicialização')

Os arquivos sorta-tempy que você não deseja limpar na inicialização são exibidos em / var / tmp

É para isso que serve :-)

nemo
fonte