Costumo usar o /tmp
diretório na minha máquina Linux para armazenar arquivos temporários (por exemplo, PDFs de um site que deseja que eu faça o download primeiro, etc.) e costumo criar um diretório com meu nome de usuário. Mas em toda inicialização, ele (incluindo todos os arquivos) é excluído. Agora eu sei que posso inseri-lo /var/tmp
, mas quero que todo o seu conteúdo seja excluído, mas que o próprio diretório seja mantido. Assim:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
Há alguma maneira de fazer isso? Talvez com permissões ou com uma configuração especial?
/tmp
é provavelmente umtmpfs
sistema de arquivos. Esses arquivos não são realmente excluídos; eles são simplesmente armazenados na RAM e perdidos em uma reinicialização. É por isso que você obtém respostas que se resumem a "re-criá-lo na inicialização ou login"Respostas:
Uma solução seria usar um
@reboot
trabalho cron:Adicionar isso ao seu crontab
crontab -e
faria com que ele fosse executado sempre que a máquina inicializar.Ou use
no arquivo de inicialização do seu shell.
Em ambos os casos, você também pode querer usar
no arquivo de inicialização do seu shell, se você deseja usar esse diretório como o diretório temporário padrão.
fonte
@reboot mkdir -p "/tmp/$USER"
ao final do crontab não faz nada, enquanto a execuçãomkdir -p "/tmp/$USER"
cria o diretório. O segundo não trabalho para mim, a propósito, porque eu preciso acessar meu/tmp
através de outros programas, e atirando-se a cada vez que shell é meio chato ...@reboot
trabalho cron não cria um diretório? Você está recebendo algum email enviado para sua conta com alguma mensagem de erro do daemon cron?mail
? Ou isso não é necessário?Eu uso
pam-tmpdir
para isso: ele cria um diretório temporário privado do usuário no login. Para configurá-lo, adicioneaos serviços PAM apropriados; em um sistema baseado no Debian, a instalação do
libpam-tmpdir
pacote oferecerá isso para você, ou você pode adicionar a linha a/etc/pam.d/common-session
. Na próxima vez que você fizer login, você encontrará um diretório/tmp/user
com seu ID de usuárioTMP
eTMPDIR
definirá adequadamente.fonte
Se você não estiver executando um sistema com systemd e ele usar systemd-tmpfiles para gerenciar a limpeza, configure o diretório usando esse sistema.
Aqui está uma documentação completa . Você pode conseguir o que deseja criando
/etc/tmpfiles.d/something.conf
com conteúdos como:fonte
Conforme indicado nos comentários,
/tmp
é para arquivos transitórios e que não serão perdidos se forem excluídos. Se você estiver no meio de alguma coisa e a máquina reiniciar, tudo o que você escreveu lá desaparecerá e você terá que começar de novo, o que significa que esses arquivos podem não ter sido tão temporários, afinal.Eu mantive um diretório temporário no meu diretório pessoal por muitos anos, começando quando um gigabyte tinha muito espaço e constatei que era necessária uma limpeza periódica para se livrar dos arquivos que haviam se tornado antigos e sujos. Na maioria das vezes, o que me restava após esse processo tinha menos de algumas semanas, então agora limpo-o com um trabalho cron que é executado uma vez por dia:
Qualquer coisa que eu baixe ou crie como semi-temporária vai para lá e o sistema limpa qualquer coisa que eu deixar para trás. Qualquer coisa que precise de um lar permanente fica muito antes do trabalho do cron se livrar dele.
fonte
mkdir a a/b; touch a/b/c
. Agora aguarde até que seus 30 dias expirem. À medida que você excluic
, a atualização é feitab
, o que significa que deve aguardar mais 30 dias. Da mesma forma coma
quando você excluib
. Em segundo lugar, se você criar arquivos,b
mas não tocara
por 30 dias, oa
diretório será atingidorm -rf
e apagará seus arquivos recentes emb
.find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir {} + 2>/dev/null
funciona para mim