Acabei de pegar um erro confuso:
rm: cannot remove `xxx/app/cache/prod': Directory not empty
que foi causado pelo seguinte comando:
rm -rf $cache_dir/*
onde $cache_dir
é definido comoxxx/app/cache
Então, eu vejo como: rm
removeu tudo no cache/prod
diretório e logo antes de tentar remover o cache/prod
diretório - outro programa criou um arquivo / diretório dentro dele, causando rm
falha.
Minha suposição está correta?
rm -rf
segurança de threads: se você executá-lo várias vezes simultaneamente no mesmo diretório, o diretório será excluído. Trata-se de rm -r
não ser atômico.
rm
invocação, poderemos falar sobre segurança de threads. Mas de qualquer maneira, isso não muda nada
rm -r
não é atômica. Se quiser ter certeza de que não há mais arquivos criados no diretório enquanto esterm -rf
estiver em execução, renomeie-o primeiro e remova o diretório renomeado.