use '/ run / shm' (anteriormente '/ dev / shm') como um diretório temporário

8

É uma boa prática criar um diretório em /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 muita coisa com arquivos e diretórios. Para cada teste, eu crio muitos arquivos e diretórios e, em seguida, executo o programa e, em seguida, crio o conjunto esperado de arquivos e diretórios e, em seguida, executo diff para comparar. Agora tenho cerca de 40 testes e eles já estão levando mais de 2 segundos para serem executados. Esperando acelerar as coisas, eu quero rodar os testes em um diretório em algum tipo de ramdisk.

Pesquisando sobre o disco RAM, tropecei em uma pergunta com uma resposta informando que não há problema em criar um diretório em /dev/shm e usá-lo como um diretório temporário. Pesquisando mais alguns, no entanto, me deparei com uma página wiki do debian afirmando que é um erro usar /dev/shm diretamente. Eu deveria usar as funções shm_* . Infelizmente, as funções shm_* parecem não estar disponíveis para uso em um script de shell.

Agora estou confuso. Está tudo bem ou não usar /run/shm (anteriormente /dev/shm ) como um diretório temporário?

    
por lesmana 22.04.2013 / 12:58

1 resposta

9

É perfeitamente aceitável usar algum diretório em /run desde que você tenha os direitos apropriados sobre ele. Em algumas distros modernas, /tmp já é um sistema de arquivos virtual na memória ou um symlink para um diretório dentro de /run . Se esse for o seu caso (você pode verificar isso em /etc/fstab ou digitar mtab ), você pode usar /tmp como seu diretório temporário.

Além disso, não se confunda com o artigo do Debian. shm_* funções são usadas para criar segmentos de memória compartilhada para comunicação entre processos. Com essas funções, você pode compartilhar um fragmento de memória entre dois ou mais processos para que eles se comuniquem ou colaborem usando os mesmos dados. Os processos têm o segmento de memória anexado em seu próprio espaço de endereçamento e podem ler e gravar lá como de costume. O kernel lida com a complexidade. Essas funções não estão disponíveis como funções de shell (e não seriam muito úteis em um contexto de shell). Para mais informações, consulte man 7 shm_overview . O ponto do artigo é que nenhum programa deve gerenciar diretamente os pseudo-arquivos que representam segmentos compartilhados, mas, em vez disso, usar as funções apropriadas para criar, anexar e excluir segmentos de memória compartilhada.

    
por 22.04.2013 / 14:42