Você se deparou com o comando flock
?
Ele fornece um bloqueio de arquivo dentro do sistema de arquivos para que possa ser usado em scripts de shell.
--- editar
Após minha resposta inicial acima, outras edições foram feitas no post original, ao qual adicionei comentários e uma sugestão final de uma condição de corrida em várias máquinas que estão usando o nfs e planejei um cenário. Este cenário foi desafiado por @alexis, ao que achei que merecia uma resposta.
@alexis você está correto ao trabalhar dentro de um sistema de arquivos, mas a situação se torna mais complicada quando os sistemas de arquivos montados do nfs estão envolvidos.
Não está claro a partir do OP exatamente qual mix de máquinas / servidores / clientes está envolvida nas versões do nfs, mas achei que foi o suficiente para dizer: "Você precisa de um mecanismo de sincronização melhor que o touch-rm". meio que funciona, mas tem uma probabilidade de falha de 1 em 15.000. Por isso, sugeri também que encontre uma maneira melhor de sincronizar ou codificar em torno dele.
Após uma pequena investigação sobre o assunto, encontrei algumas referências que mostram "falhas" em nfs que indicam que a remoção de um arquivo não funciona como esperado em nfs. Mais ainda, existem diferenças entre o nfs v3 e v4, especificamente para resolver essa falha, também o nfs4 poderia funcionar de forma diferente, mas não funciona, ou quebraria a compatibilidade com clientes mais antigos.
Este documento nfs resume a situação que descreve o renomear bobo que foi introduzido no código o problema, e rfc 5661 NFS 4.1 fornece mais detalhes.
- editar 2
Extrato de um parágrafo das referências acima:
Because of the design of the NFS protocol, there is no way for a file to be deleted from the name space but still remain in use by an application. Thus NFS clients have to emulate this using what already exists in the protocol. If an open file is unlinked, an NFS client renames it to a special name that looks like ".nfsXXXXX". This "hides" the file while it remains in use. This is known as a "silly rename." Note that NFS servers have nothing to do with this behavior.