Fiquei com a impressão de que os arquivos "antigos" /tmp
serão excluídos regularmente. No entanto, parece-me que /tmp
apenas crescerá enquanto quiser, e nada será excluído. Algumas pessoas dizem que é melhor sair /tmp
sozinho e excluir seu conteúdo apenas se o disco estiver ficando cheio.
Minha pergunta é, é /tmp
realmente projetado para não cuidar de si mesmo? quais são as melhores práticas?
/tmp
é limpo após a reinicialização, mas isso depende do sistema de arquivos montado lá. O quedf -h
diz?Respostas:
Para responder às perguntas:
/tmp
suposto ser esvaziado automaticamente: Sim/tmp
regularmente e manualmente: Não , seu sistema cuidará deles.Se você se perguntar:
/tmp
por qualquer motivo (precisa de espaço, deseja remover vestígios etc.): Depende , continue a ler .O Padrão de hierarquia de sistemas de arquivos (FHS) declara :
/var/tmp/
tem um objetivo semelhante , mas não deve ser excluído durante a reinicialização.Não é garantido que
/tmp/
ou/var/tmp/
seja limpo regularmente. Isso pode depender da sua distribuição e configurações, embora a maioria dos sistemas faça alguma limpeza periodicamente. Ver comentário pormike
.Se você precisar excluir um arquivo em / tmp , verifique primeiro se o arquivo está em uso. Você pode fazer isso facilmente com:
Se você tiver direitos para fazê-lo, isso mostrará o processo segurando o identificador desse arquivo, como nome do processo, PID e tipo do arquivo. Para mostrar realmente todos os processos, adicione
sudo
ou execute como root do usuário .mostrará todos os arquivos
/tmp
e diretórios abaixo (+D
) que estão abertos no momento. Claro que você não deve excluir esses arquivos.De fato, quando você exclui um arquivo que ainda está aberto - se você tiver o direito de fazê-lo - ele fica inacessível no espaço para nome do sistema de arquivos, mas ainda existe para os processos que possuem um arquivo aberto para ele. Depois de fechar esse identificador, o arquivo não está mais acessível para esse processo e, se nenhum processo tiver aberto mais, ele será excluído. Um processo não deve supor que o arquivo sobreviva entre as
open
chamadas subseqüentes , mas os programadores são desleixados e você nunca sabe. Por esse motivo, não é tão inteligente excluir arquivos que ainda estão em uso por alguns programas.fonte
Eu acho que isso depende do sistema operacional. Eu imagino que / tmp é normalmente limpo na reinicialização e, de fato, não seria seguro para o sistema se limpar no meio da sessão, pois não saberá quais arquivos estão ativos.
Se você for corajoso, convém lançar um comando no crontab que exclui arquivos mais antigos que uma certa idade, mas isso pode causar alguns problemas se excluir os arquivos ainda usados. Você pode tentar um comando (eu não tentei) como
Que teoricamente removerá todos os arquivos em / tmp com mais de 10 dias.
fonte
-r
a issoOs diretórios / tmp e / var / tmp são limpos em uma programação normal. Isso pode depender da sua distribuição. No meu sistema CentOS (um clone do RedHat), há um trabalho cron agendado para executar tmpwatch , um limpador de diretório tmp, em uma programação diária . Os arquivos em / var / tmp podem ficar um pouco mais longos que os arquivos em / tmp /. Também vi scripts que podam / tmp (mas explicitamente não / var / tmp) em uma reinicialização, sabendo que não pode haver nada mantendo esse arquivo aberto, pois todos os processos são novos.
Então, sim, / tmp possui manutenção a partir de scripts básicos. Ele ainda pode ser preenchido fora desses tempos de manutenção. Se você optar por limpar as coisas manualmente, a melhor prática do sysadmin é ter cuidado. O conhecimento do Sysadmin fala sobre links simbólicos em / tmp apontando para os arquivos de sistema necessários que foram excluídos quando o n00b sysadmins executou um
find
script simples .fonte
No CentOS, existe um trabalho
/etc/cron.daily
chamadotmpwatch
que remove recursivamente os arquivos que não foram acessados por um determinado período. Normalmente, é usado para limpar diretórios que são usados para espaço de espera temporário, como / tmp.Este é o
/etc/cron.daily/tmpwatch
script/tmp
o conteúdo do diretório é excluído apenas quando o sistema é reiniciado, porque o processo em execução pode ter acesso a arquivos desse diretório.fonte
Você pode remover o conteúdo de
/tmp/
; mas o problema é que, se você tiver um serviço que grava regularmente/tmp/
e exclui os arquivos, pode causar uma falha ou interrupção no serviço até que seja reiniciado.fonte
O FHS define o
/tmp
diretório como "arquivos temporários (consulte também / var / tmp), geralmente não preservados entre as reinicializações do sistema" e/var/tmp
"arquivos temporários a serem preservados entre as reinicializações".Atualmente, por
/tmp
ser um sistema de arquivos RAM (tmpfs) por padrão (embora opcional) em muitas distribuições GNU / Linux,/tmp
é efetivamente não persistente.(Indiscutivelmente) os aplicativos devem gerenciar seus arquivos temporários de acordo, o que, na minha opinião, inclui excluí-los quando seu uso terminar e não exigir que os administradores planejem possíveis exclusões destrutivas.
fonte
/tmp
quando terminam com eles ou quando saem, mas ainda existe um problema de arquivos deixados/tmp
após uma interrupção anormal (falha) de um programa.Se você estiver executando o Debian (ou um derivado como o Ubuntu), verifique seu arquivo / etc / default / rcS e ajuste a
TMPTIME
variável de ambiente. Por definição, o que reside em / tmp não tem nada a ver aqui na próxima reinicialização.Eu recomendo
TMPTIME
variável em um servidorfonte
As distribuições são diferentes, é claro, mas eu esperaria que os arquivos temporários fossem gerenciados automaticamente pelo sistema imediatamente. Eles provavelmente usariam tarefas cron ou o serviço systemd-tmpfiles-clean. Se você estiver preocupado com espaço em disco, este é um comando útil para verificar quanto espaço cada pasta raiz está ocupando:
Para ver se seu sistema está usando o serviço systemd para gerenciar arquivos temporários, você pode apenas tentar:
Na parte inferior, você verá algo como o seguinte, que informa quando o serviço foi executado pela última vez:
Observe que este serviço será encerrado assim que for feito com a limpeza. Um serviço de timer é responsável por ativá-lo regularmente. Você pode verificá-lo com:
E você deve esperar algo como o seguinte:
Se você olhar novamente para o serviço real responsável pela limpeza dos arquivos, verá que tudo o que faz é executado:
Portanto, você pode executar esse comando diretamente ou fazê-lo corretamente, basta:
O qual executará o comando apropriado para o seu sistema. No entanto, você deve estar ciente de que este não é um comando "excluir todos os arquivos temporários agora". Existem vários arquivos de configuração que controlam o que realmente é excluído e quando, para que os aplicativos possam configurar individualmente seus arquivos temporários.
Um local para procurar manipulação genérica de arquivos temporários pode ser o
/usr/lib/tmpfiles.d/tmp.conf
que pode ter as seguintes linhas relevantes:Você pode alterá-los para um tempo mais curto, se o seu sistema ficar sem espaço, por exemplo, para:
Para ter certeza do que está fazendo,
man tmpfiles.d
leia o manual. Mais uma vez, achei a abordagem apresentada aqui relevante em um sistema CentOS (baseado em RedHat) e Ubuntu, mas não sei muito sobre outras distribuições.fonte