Ho appena riscontrato un errore confuso:
rm: cannot remove `xxx/app/cache/prod': Directory not empty
che è stato causato dal seguente comando:
rm -rf $cache_dir/*
dove $cache_dir
è definito comexxx/app/cache
Quindi lo vedo come: rm
rimosso tutto in cache/prod
dir, quindi proprio prima di tentare di rimuovere la cache/prod
directory - un altro programma ha creato un file / una directory al suo interno e quindi ha causato un rm
errore.
La mia ipotesi è corretta?
rm -rf
sicurezza dei thread: se lo si esegue più volte contemporaneamente nella stessa directory, la directory viene eliminata. Si tratta di rm -r
non essere atomici.
rm
invocazione, potremmo parlare di thread-safety. Ma comunque, non cambia nulla
rm -r
non è atomico. Se si desidera essere sicuri che non vengano creati altri file nella directory mentrerm -rf
è in esecuzione, è possibile rinominarlo prima, quindi rimuovere la directory rinominata.