Я только что обнаружил непонятную ошибку:
rm: cannot remove `xxx/app/cache/prod': Directory not empty
который был вызван следующей командой:
rm -rf $cache_dir/*
где $cache_dir
определяется какxxx/app/cache
Таким образом, я вижу это так: rm
удалил все в cache/prod
dir, затем прямо перед попыткой удалить cache/prod
каталог - другая программа создала файл / каталог внутри него, что вызвало rm
сбой.
Правильно ли мое предположение?
rm -rf
поточной безопасностью: если вы запускаете его несколько раз одновременно в одном и том же каталоге, каталог удаляется. Это rm -r
не атомарность.
rm
вызова, мы можем говорить о безопасности потока. Но в любом случае, это ничего не меняет
rm -r
не атомарно. Если вы хотите быть уверены, что файлы не будут созданы в каталоге во времяrm -rf
работы, вы можете сначала переименовать его, а затем удалить переименованный каталог.