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: rmrimosso tutto in cache/proddir, quindi proprio prima di tentare di rimuovere la cache/proddirectory - un altro programma ha creato un file / una directory al suo interno e quindi ha causato un rmerrore.
La mia ipotesi è corretta?
rm -rfsicurezza dei thread: se lo si esegue più volte contemporaneamente nella stessa directory, la directory viene eliminata. Si tratta di rm -rnon essere atomici.
rminvocazione, potremmo parlare di thread-safety. Ma comunque, non cambia nulla
rm -rnon è 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.