É uma boa prática criar um diretório /run/shm
(anteriormente /dev/shm
) e usá-lo como um diretório temporário para um aplicativo?
Antecedentes: estou escrevendo testes de caixa preta para um programa que faz muitas coisas com arquivos e diretórios. Para cada teste, crio muitos arquivos e diretórios e, em seguida, executo o programa, crio o conjunto esperado de arquivos e diretórios e, em seguida, executo o diff para comparar. Agora tenho cerca de 40 testes e eles já estão demorando mais de 2 segundos para serem executados. Na esperança de acelerar as coisas, eu quero executar os testes em um diretório em algum tipo de ramdisk.
Pesquisando sobre o disco ram, me deparei com uma pergunta com uma resposta afirmando que não há problema em criar um diretório /dev/shm
e usá-lo como um diretório temporário. Pesquisando um pouco mais, no entanto, me deparei com uma página wiki do debian, afirmando que é um erro usar /dev/shm
diretamente. Eu deveria usar as shm_*
funções. Infelizmente, as shm_*
funções parecem não estar disponíveis para uso em um script de shell.
Agora eu estou confuso. Está tudo bem ou não usar /run/shm
(anteriormente /dev/shm
) como um diretório temporário?
/tmp
é mais semântico. Se seus usuários tiverem RAM suficiente para usar /dev/shm
arquivos temporários para acelerar as coisas, eles o montarão lá. Mas se eles não tiverem RAM suficiente, e montá-lo lá diminui a velocidade do computador, forçando todos os processos a usarem arquivos de troca, eles salvarão seu RAM para coisas mais importantes e usarão espaço em disco comum para o /tmp
sistema de arquivos. Em outras palavras, /tmp
é mais sintonizável.
/tmp
na memória compartilhada.