Es wird versucht zu prüfen, ob der Prozess noch läuft, wodurch die Dateiressourcen angehalten werden.
lsof -nP | grep '(deleted)'
Sollte Ihnen einen Ausgangspunkt geben.
Ich habe eine Meldung erhalten, dass eine lokale Festplatte voll ist.
dm@fooserv:/local/data/plog $ df -l Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/rootvg-datavol 121790564 115659468 0 100% /local/data tmpfs 102400 1028 101372 2% /var/asagent/lib/asagen
Ich überprüfte das Verzeichnis und sah die Datei.
user@fooserv:/local/data/plog $ ls -ltr total 84926904 lrwxrwxrwx 1 user ers_gsd 37 Aug 15 03:00 bomb.log -> /local/data/plog/bomb.31655.log -rw-rw-rw- 1 user ers_gsd 0 Aug 15 03:00 recovery.log drwxrwxrwt 2 user ers_gsd 4096 Aug 15 03:00 log/ -rw-rw-rw- 1 user ers_gsd 0 Aug 15 03:00 dropping.log -rw-rw-rw- 1 user ers_gsd 10109 Aug 15 09:20 proc_fooserv.log -rw-rw-rw- 1 user ers_gsd 381083 Aug 15 10:25 trip_bomb.rip.1.log -rw-rw-rw- 1 user ers_gsd 60563456 Aug 15 13:35 bomb.31655.log -rw-rw-rw- 1 user ers_gsd 0 Aug 15 13:37 bomb.stats -rw-rw-rw- 1 user ers_gsd 86819237888 Aug 15 13:37 process-one.log
Ich habe herausgefunden, welcher Prozess die Dateien erstellt hat, und hat sie getötet:
user@fooserv:/local/data/plog $ ps -ef | grep 12077 user 12077 1 0 09:20 ? 00:00:00 /bin/bash /home/user/bin/process_big.sh /local/data/plog/process-one.log user 12085 12077 0 09:20 ? 00:00:35 tail -f /local/data/plog/process-one.log user 12088 12077 0 09:20 ? 00:01:31 grep ERR user 12095 12077 0 09:20 ? 00:02:06 grep -v FIXME user 12098 12077 61 09:20 ? 02:38:56 /bin/bash /home/user/bin/process_big.sh /local/data/plog/process-one.log user 22836 32756 0 13:36 pts/0 00:00:00 grep 12077 user@fooserv:/local/data/plog $ kill 12098 user@fooserv:/local/data/plog $ kill 12100
Ich habe die Datei entfernt:
Benutzer @ fooserv: / local / data / plog $ rm process-one.log
der df sagt immer noch, dass das verzeichnis voll ist:
dm@fooserv:/local/data/plog $ df -l Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/rootvg-datavol 121790564 115659468 0 100% /local/data tmpfs 102400 1028 101372 2% /var/asagent/lib/asagent user@fooserv:/local/data/plog $ ~
Es wird versucht zu prüfen, ob der Prozess noch läuft, wodurch die Dateiressourcen angehalten werden.
lsof -nP | grep '(deleted)'
Sollte Ihnen einen Ausgangspunkt geben.
Bist du sicher, dass du den richtigen Prozess erledigt hast? Es sieht so aus, 12077
als ob die Datei die betreffende Datei öffnet / erstellt / enthält.
Hymie hat wahrscheinlich Recht - entweder haben Sie den falschen Prozess beendet oder die Datei ist bei mehr als einem Prozess geöffnet. Beim Löschen der Datei wurde der Inode aus der Verzeichnistabelle entfernt. Der Speicherplatz wird jedoch erst freigegeben, wenn er von jedem Prozess, der die Datei verwendet, geschlossen wird. Es ist an sich nicht gesperrt, aber es gibt einen Zähler, der Null sein muss, bevor der Speicherplatz freigegeben wird.
Versuchen Sie es mit lsof. Und da Sie die Datei bereits entfernt haben, sehen Sie, was im Verzeichnis geöffnet ist:
$ lsof + D / local / data / plog
Oder eine der anderen Beschwerden von lsof: http://www.thegeekstuff.com/2012/08/lsof-command-examples/
Ich habe diese nette Erklärung hier gefunden:
https://access.redhat.com/solutions/2316
Wie in der Antwort lsof | grep deleted
von RJ ist dies eine große Hilfe. Nachdem ich die Hauptstraftäter (dh mehrere Dutzend GB-Dateien) echo > /proc/pid/fd/fd_number
identifiziert habe, habe ich verwendet, wobei PID und FD wie im obigen Link angegeben sind.
Es wird Sudo erfordern. Auch ein Neustart hilft.
Der verknüpfte Hinweis war besonders nützlich, da wir die Maschine nicht neu starten mussten.