Löschen einer 'Datei' unter / proc oder / dev

8

Ich verwende ein Cowdancer / Debootstrap-Setup, um eine Chroot zu generieren.

Natürlich generiere ich beim Iterieren einige schlechte Chroot-Konfigurationen.

Ich befand mich in einer unangenehmen Situation, in der ich eine Reihe von Dateien unter / proc habe, die sich weigern, gelöscht zu werden.

Wenn ich sudo rm -rf z_needs_to_be_deleted, bekomme ich eine Menge Nachrichten, die analog dazu aussehen:

rm: cannot remove 'z_needs_to_be_deleted/var/cache/pbuilder/build/cow.13620/
proc/6352/task/6358/loginuid':  Permission denied

Wie töte ich diese Chroot?

Paul Nathan
quelle

Antworten:

16

/procund (normalerweise) viele von ihnen /devsind schreibgeschützte "Dateisysteme". Sie löschen sie nicht, sondern nur umountdas Dateisystem. Wenn es rm -r /proc/6352funktioniert, müsste es semantisch äquivalent zu sein kill -9 6352, da es wirklich nur Informationen über pid 6352 enthält, keine tatsächlichen Dateien irgendwo.

Verwenden Sie mountdiese Option, um zu sehen, welche gemounteten Dateisysteme sich unter chrootund befinden umount, bevor Sie Dateien entfernen. Dies ist vielleicht noch wichtiger, wenn es sich um ein bindMount handelt, da rm -rdie Originaldateien außerhalb des Gefängnisses entfernt werden.

Geekosaurier
quelle
Unter Linux /devist dies normalerweise eine beschreibbare Instanz von tmpfs , die von udev verwaltet wird.
user1686
@grawity: Ich habe mehr über Dinge nachgedacht /dev/fd, die normalerweise ein Symlink zu sind /proc/self/fd. IIRC gibt es auch einige ALSA-Symlinks.
Geekosaurier