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')


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.

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.


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


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.


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.


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

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 :-)

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.