Esta questão é sobre o Ubuntu 14.10 no meu laptop de desenvolvedor.
Eu tenho uma pasta /tmp
que é usada por um aplicativo para colocar coisas temporárias lá. Esse aplicativo geralmente cria uma pasta temporária na minha propriedade e a apaga posteriormente. Por algum motivo, isso não funciona quando o homedir é criptografado. Então, em vez disso, fiz um link simbólico para /tmp/foo
dentro do meu homedir. Meu aplicativo pode escrever lá e transformá-lo em uma subpasta temporária.
Agora /tmp/foo
é excluído toda vez que eu reinicio minha máquina. Até agora, eu apenas recriei a pasta manualmente após a reinicialização. Agora eu aprendi em Como o diretório / tmp é limpo? que existe um trabalho fazendo isso.
Eu olhei, /etc/init/mounted-tmp.conf
mas meu bashfu e especialmente meu findfu não são suficientes para fazer o que eu quero. Aqui está um trecho desse arquivo:
EXCEPT='! -name . ! ( -path ./lost+found -uid 0 ) ! ( -path ./quota.user -uid 0 ) ! ( -path ./aquota.user -uid 0 ) ! ( -path ./quota.group -uid 0 ) ! ( -path ./aquota.group -uid 0 ) ! ( -path ./.journal -uid 0 ) ! ( -path ./.clean -uid 0 ) ! ( -path "./...security*" -uid 0 )' # Remove all old files, then all empty directories find . -depth -xdev $TEXPR $EXCEPT ! -type d -delete find . -depth -xdev $DEXPR $EXCEPT -type d -empty -delete
O que eu quero fazer é adicionar uma condição que o apague tudo dentro /tmp/foo
, mas não a /tmp/foo
si próprio. Como faço isso?
/tmp/foo
um diretório ou um arquivo?mkdir /tmp/foo
logo antesend script
?Respostas:
/etc/init/mounted-tmp.conf
faz parte domountall
pacote, portanto, quaisquer atualizações nesse pacote e as alterações sugeridas serão revertidas.Em vez disso, de acordo com o padrão Filesystem Hierachy (FHS) ;
Em relação ao / tmp :
Em relação a / var / tmp :
Portanto, você deve alterar seu link simbólico para usar em
/var/tmp
vez de/tmp
.fonte
/var/tmp
não é uma boa ideia?If a person is familiar with ... a certain, single instrument, they may have a confirmation bias to believe that it is the answer to/involved in everything.
Estou dizendo que o OP está usando / tmp para algo que não deve ser usado - Usando / tmp como martelo para o problema de manter o tmp-mas-não-bastante coisas -tmp. / var / tmp deve ser mantido entre as reinicializações, portanto é a resposta certa.Não é uma resposta estrita à sua pergunta, mas você pode achar
/var/tmp
um local mais adequado, pois ele não é limpo durante uma reinicialização. Ele foi projetado para arquivos temporários que não devem ser descartados automaticamente após um curto período de tempo.O que costumo fazer, no entanto, é criar uma pasta em / opt para armazenar coisas aleatórias que não quero em casa. É um local adequado para colocar coisas que estão fora do controle do sistema operacional principal.
fonte
Igual a:
Exemplo:
Concordo com o usuário aap: Você deve cuidar disso no software usado, recriando o diretório lá se eles forem arquivos tmp ou usar outro diretório se eles não forem arquivos tmp que não sejam eliminados.
fonte
find
comando funciona conforme o esperado quando executado manualmente, o diretório ainda é removido após a edição/etc/init/mounted-tmp.conf
. Parece que algo mais está acontecendo aqui.-path ./foo
e mesmo-name '*foo*'
e nenhuma delas funcionou (no Ubuntu Server 14.04). Acho que esse não é o arquivo certo e estamos procurando no lugar errado. O que você está sugerindo deve funcionar, simplesmente não parece.É uma má idéia ter arquivos com valor futuro, gravar no diretório / tmp (/ var / tmp, como sugerido por outros, é um lugar melhor). Dito isto, você pode tentar o chattr. Isso deve ser executado após a saída do aplicativo, mas antes de um desligamento. Lembre-se de que esta operação não permitirá que nada grave nesse diretório a partir de agora.
toque em /tmp/foo/ddmmyy/.001_immute_me chattr + i /tmp/foo/ddmmyy/.001_immute_me
fonte
Rode isto:
Adicione isso ao
/ etc / inittabveja aqui: onde está o arquivo inittab? :Isso criará o / etc / foo na inicialização, se ele não existir, e o esvaziará.
Isso fará o mesmo no login do bash:
fonte
/etc/inittab
. Isso é declarado de forma clara e inequívoca em sua página de manual.