rmdir(2)
schlägt fehl, wenn das Verzeichnis nicht leer ist. Wenn ein anderer Prozess Dateien erstellt, während rm(1)
er sie entfernt, weiß er nicht, ob er sie löschen soll. Wenn es daher an der Zeit ist, rm(1)
zu versuchen, das zu löschen, was seiner Meinung nach ein leeres Verzeichnis sein sollte, schlägt dies mit dem von Ihnen veröffentlichten Fehler fehl.
Eine Möglichkeit, das Verzeichnis angesichts gleichzeitiger Dateierstellungen im Verzeichnis zu löschen, besteht darin, es umzubenennen:
mv a a~
rm -rf a~
Es ist möglich, dass dies nicht funktioniert, wenn die Prozesse, in denen die Dateien erstellt a/b
werden, dies nicht nach Pfad ( open(2)
vs. openat(2)
) tun .
Ich gehe davon aus, dass die Prozesse, in denen Dateien erstellt a/b
werden, dieses Verzeichnis neu erstellen, wenn es nicht vorhanden ist, oder Fehler ordnungsgemäß behandeln, wenn es nicht vorhanden ist. Da Sie bereits versuchen, das Verzeichnis unter anderen Prozessen zu löschen, scheint dies eine sichere Annahme zu sein.
rm -rf
sollte immer gelingen, ohne Erlaubnisprobleme. Bitten Sie das Skript, die Debugging-Ausgabe zu drucken, wenn das Entfernen fehlschlägt.ls -laR a/b
sollte ausreichen.