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_dirist definiert alsxxx/app/cache
Ich sehe es also so: rmalles in cache/proddir entfernt, dann kurz bevor es versuchte, das cache/prodVerzeichnis zu entfernen - ein anderes Programm hat eine Datei / ein Verzeichnis darin erstellt, wodurch es einen rmFehler verursachte .
Ist meine Annahme richtig?
rm -rfThread-Sicherheit zu tun : Wenn Sie es mehrmals gleichzeitig im selben Verzeichnis ausführen, wird das Verzeichnis gelöscht. Hier geht es darum, rm -rnicht atomar zu sein.
rmAufruf annehmen , können wir über Thread-Sicherheit sprechen. Aber es ändert nichts
rm -rist nicht atomar. Wenn Sie sicherstellen möchten, dass während derrm -rfAusführung keine weiteren Dateien im Verzeichnis erstellt werden , können Sie diese zuerst umbenennen und dann das umbenannte Verzeichnis entfernen.