Estou começando a colocar vários arquivos no /tmp
, e me perguntei sobre as regras para excluí-los?
Estou imaginando que é diferente para diferentes distribuições e estou particularmente interessado nas versões de desktop Ubuntu e Fedora.
Mas uma boa maneira geral de descobrir seria uma grande coisa.
Ainda melhor seria uma boa maneira geral de controlá-lo! (Algo como 'todos os dias às 3 da manhã, exclua todos /tmp
os arquivos com mais de 60 dias, mas não limpe o diretório na reinicialização')
Isso depende da sua distribuição. Em alguns sistemas, ele é excluído apenas quando inicializado, outros têm cronjobs executando excluindo itens com mais de n horas.
tmpreaper
which é chamado por/etc/cron.daily
, configurado via/etc/default/rcS
e/etc/tmpreaper.conf
. ( Créditos a esta resposta ).tmpfiles.d
. ( Créditos a esta resposta )./etc/default/rcS
)./etc/cron.daily/tmpwatch
; RHEL7/RHEL8 e tipo RedHat com systemd é configurado em/usr/lib/tmpfiles.d/tmp.conf
, chamado porsystemd-tmpfiles-clean.service
)./etc/conf.d/bootmisc
.No CentOS (e presumo que no Fedora), há um trabalho em /etc/cron.daily chamado
tmpwatch
. Isso executa/usr/sbin/tmpwatch
, que excluirá os arquivos que não foram acessados no número de horas especificado, ou seja, o comportamento padrão é examinaratime
o 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.
No Ubuntu 11.10 que estou usando, há um script upstart
/etc/init/mounted-tmp.conf
em . O início dele diz o seguinte:Você pode ler mais detalhes, no entanto, em geral,
/tmp
é limpo quando é montado ou/usr
montado. Isso acontece regularmente na inicialização, portanto, essa/tmp
limpeza é executada em cada inicialização.In
/etc/default/rcS
youTMPTIME
set, que é usado no script init acima para alimentar os doisfind
comandos em seu final - basicamente controlando a exclusão de arquivos com base em seus tempos (modificado, alterado, acessado).A partir do Fedora 18,
/tmp
é montado emtmpfs
(ou seja, RAM) por padrão e, portanto, apagado ao desligar.Esse comportamento pode ser desabilitado emitindo
systemctl mask tmp.mount
e reinicializando (e reativado emitindosystemctl unmask tmp.mount
e reinicializando) e, em seguida/tmp
, será montado no sistema de/
arquivos e pode ser controlado por/usr/lib/tmpfiles.d/tmp.conf
configurações.Veja http://fedoraproject.org/wiki/Features/tmp-on-tmpfs e
man tmpfiles.d
para mais detalhes sobre cada caso.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 forma como o tmpwatch é chamado.
Os argumentos -x são arquivos a serem excluídos. O 2º ao último argumento é o tempo de espera após o último tempo acessado. O último argumento é o diretório a ser examinado.
Arquivos sorta-tempy que você não deseja limpar na inicialização vão em /var/tmp
É para isso que serve :-)
No openSUSE 13.2, o comportamento de limpeza pode ser controlado com a seguinte variável em 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 por (o uso de cada variável também pode ser encontrado lá)
/etc/sysconfig/cron
arquivo manualmente na linha de comando.Além de todas as respostas detalhadas encontradas aqui, pode ser interessante observar o que o FHS ( Filesystem Hierarchy Standard ) tem a dizer sobre os diretórios temporários em geral:
/tmp
/var/tmp