Acabo de detectar un error confuso:
rm: cannot remove `xxx/app/cache/prod': Directory not empty
que fue causado por el siguiente comando:
rm -rf $cache_dir/*
donde $cache_dir
se define comoxxx/app/cache
Entonces lo veo así: rm
eliminé todo en el cache/prod
directorio, luego justo antes de intentar eliminar el cache/prod
directorio; otro programa creó un archivo / un directorio dentro de él, por lo que causó un rm
error.
¿Es correcta mi suposición?
rm -rf
ser seguro para subprocesos: si lo ejecuta varias veces al mismo tiempo en el mismo directorio, el directorio se eliminará. Esto se trata de rm -r
no ser atómico.
rm
invocación, podemos hablar sobre seguridad de thread. Pero de todos modos, no cambia nada
rm -r
no es atómica. Si desea asegurarse de que no se creen más archivos en el directorio mientras serm -rf
está ejecutando, puede cambiarle el nombre primero y luego eliminar el directorio renombrado.