Ich habe gerade einen verwirrenden Fehler entdeckt:
rm: cannot remove `xxx/app/cache/prod': Directory not empty
was durch den folgenden Befehl verursacht wurde:
rm -rf $cache_dir/*
wo $cache_dir
ist definiert alsxxx/app/cache
Ich sehe es also so: rm
alles in cache/prod
dir entfernt, dann kurz bevor es versuchte, das cache/prod
Verzeichnis zu entfernen - ein anderes Programm hat eine Datei / ein Verzeichnis darin erstellt, wodurch es einen rm
Fehler verursachte .
Ist meine Annahme richtig?
rm -rf
Thread-Sicherheit zu tun : Wenn Sie es mehrmals gleichzeitig im selben Verzeichnis ausführen, wird das Verzeichnis gelöscht. Hier geht es darum, rm -r
nicht atomar zu sein.
rm
Aufruf annehmen , können wir über Thread-Sicherheit sprechen. Aber es ändert nichts
rm -r
ist nicht atomar. Wenn Sie sicherstellen möchten, dass während derrm -rf
Ausführung keine weiteren Dateien im Verzeichnis erstellt werden , können Sie diese zuerst umbenennen und dann das umbenannte Verzeichnis entfernen.