Infelizmente, estou sendo forçado a trabalhar com um software que manipula e desmonta automaticamente um volume de rede muito mal. tem uma tendência irritante de deixar um diretório onde estava o ponto de montagem, mas não consegue lidar adequadamente com isso quando monta o volume novamente (é supostamente arrumado, mas muitas vezes não ).
Naturalmente eu estou nos desenvolvedores para corrigir isso, mas enquanto isso eu preciso fazer alguma coisa para arrumar o (s) ponto (s) de montagem.
Então, essencialmente, o que eu preciso fazer é remover o diretório, mas somente se não for atualmente um ponto de montagem (já que não quero excluir o conteúdo do volume por acidente).
Agora, posso obter o ID do dispositivo do diretório e compará-lo ao ID do dispositivo do root com bastante facilidade, mas existe a possibilidade de uma condição de corrida se eu usar essa comparação, ou seja, se o volume estiver montado entre verificando IDs de dispositivos e chamando rm -r /mnt/point .
Existem alternativas? Fiquei intrigado com a possibilidade de usar a opção find do comando -xdev , mas não tenho certeza de como eu realmente forneceria um ponto de comparação, pois find /mnt/point -xdev não funcionará como destino e seu conteúdo é o mesmo dispositivo.
Além disso, usar rmdir na suposição de que a pasta restante ficará sempre vazia parece não ser confiável, já que em alguns sistemas um ponto de montagem pode ter um arquivo dentro dele; O macOS, por exemplo, deixa um arquivo .autodiskmounted dentro dele. Enquanto eu poderia criar uma lista de tais casos e lidar com eles, seria bom (e esperançosamente útil para outros) ter uma solução de propósito mais geral para referência futura, se tal coisa for possível.