Como mencionado nos comentários, ls em uma montagem NFS resultará em duas chamadas NFS separadas, com um pequeno atraso entre elas. Se você suspeitar que algum processo possa estar adicionando e removendo entradas no diretório, eu definitivamente o procuraria como uma explicação. Aqui está como eu testaria essa teoria.
Se o problema ocorrer um número significativo de vezes que você executar ls (ou seja, seria fácil reproduzir manualmente executando ls várias vezes), você poderia simplesmente:
{ ls;ls;ls; } 2>&1 | tee ls.out | grep 'No such file'
Execute novamente esse comando até obter o erro, em seguida, inspecione o arquivo ls.out , localize os arquivos sobre os quais ele estava reclamando e veja se esses arquivos 1) existem no primeiro 1/3 da saída e 2) não existem no último 1/3 da saída. Como os arquivos foram (presumivelmente) excluídos enquanto um dos comandos ls estava sendo executado, não seria muito difícil descobrir se eles estavam lá antes e depois foram removidos.
Se a reprodução consumir muito tempo, você pode escrever um roteiro no estilo (não testado!):
#!/bin/bash
while /bin/true; do
/bin/ls -lc >ls1.out 2>&1
/bin/ls -lc >ls2.out 2>&1
/bin/ls -lc >ls3.out 2>&1
grep 'No such file' ls2.out >missing.out 2>&1
if (( $? != 0 )); then
echo "Found the error!"
break
fi
done
(Adicione sleep s se você estiver preocupado com o impacto no desempenho de executar isso em um loop estreito desenfreado.)
Execute isso em uma sessão screen e verifique isso depois. Quando o script sair do relatório informando que ele encontrou o erro, verifique missing.out para ver quais arquivos ls não encontraram e, em seguida, verifique se esses arquivos estão listados em ls1.out , mas não em ls3.out .
Não se esqueça de verificar a hora informada por ls , caso esse processo misterioso exclua o arquivo e recrie um novo arquivo com o mesmo nome a tempo para o terceiro ls listá-lo. :)
Se, por algum motivo, a causa não for que o processo excluiu o arquivo enquanto ls estava em execução, denuncie aqui e descobriremos o que mais tentar .