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