Warum hängt 'df'?


22

Ich hatte kürzlich Probleme beim Laufen df, wo es nur hängt . Hier ist die straceAusgabe, und Sie werden sehen, dass ich getötet habe, da es nur dort saß:

$ strace /bin/df
execve("/bin/df", ["/bin/df"], [/* 35 vars */]) = 0
brk(0)                                  = 0x8d03000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7840000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=90781, ...}) = 0
mmap2(NULL, 90781, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7829000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240o\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1401000, ...}) = 0
mmap2(NULL, 1415544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76cf000
mprotect(0xb7822000, 4096, PROT_NONE)   = 0
mmap2(0xb7823000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x153) = 0xb7823000
mmap2(0xb7826000, 10616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7826000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76ce000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb76ce8d0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7823000, 8192, PROT_READ)   = 0
mprotect(0xb785e000, 4096, PROT_READ)   = 0
munmap(0xb7829000, 90781)               = 0
brk(0)                                  = 0x8d03000
brk(0x8d24000)                          = 0x8d24000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1534656, ...}) = 0
mmap2(NULL, 1534656, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7557000
close(3)                                = 0
open("/etc/mtab", O_RDONLY)             = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=708, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb783f000
read(3, "/dev/sda6 / ext4 rw,errors=remou"..., 4096) = 708
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb783f000, 4096)                = 0
statfs64("/", 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=4805813, f_bfree=3325193, f_bavail=3081072, f_files=1220608, f_ffree=1007617, f_fsid={-1624337824, -871214780}, f_namelen=255, f_frsize=4096}) = 0
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2570, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb783f000
read(3, "# Locale name alias data base.\n#"..., 4096) = 2570
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb783f000, 4096)                = 0
open("/usr/share/locale/en_ZA.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_ZA/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
statfs64("/lib/init/rw", 84, {f_type=0x1021994, f_bsize=4096, f_blocks=1280, f_bfree=1280, f_bavail=1280, f_files=215959, f_ffree=215956, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs64("/run", 84, {f_type=0x1021994, f_bsize=4096, f_blocks=102000, f_bfree=101823, f_bavail=101823, f_files=215959, f_ffree=215559, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs64("/sys", 84, {f_type="SYSFS_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs64("/dev", 84, {f_type=0x1021994, f_bsize=4096, f_blocks=508762, f_bfree=508762, f_bavail=508762, f_files=213490, f_ffree=213031, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs64("/run/shm", 84, {f_type=0x1021994, f_bsize=4096, f_blocks=203999, f_bfree=203816, f_bavail=203816, f_files=215959, f_ffree=215955, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs64("/dev/pts", 84, {f_type="DEVPTS_SUPER_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs64("/boot", 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=1024, f_blocks=188403, f_bfree=150550, f_bavail=140822, f_files=48768, f_ffree=48525, f_fsid={-655942775, 1382872797}, f_namelen=255, f_frsize=1024}) = 0
statfs64("/home", 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=66535124, f_bfree=6683145, f_bavail=3303357, f_files=16900096, f_ffree=16633097, f_fsid={-515912651, 307591087}, f_namelen=255, f_frsize=4096}) = 0
statfs64("/sys/fs/fuse/connections", 84, {f_type=0x65735543, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
statfs64("/home/wena/temp/mount", 84, ^C <unfinished ...>

Ein anderes Tool, das fehlschlägt gnome-system-monitor, scheint auch sofort nach dem Start zu hängen.


Meine Version von coreutils ist 8.13-2 und läuft unter Debian Unstable.
Tshepang

Ist sonst noch jemand wegen der Zwergenfestung hier?
Cory Klein

@ CoryKlein: was ist das?
Tshepang

1
Ein Spiel in der Alpha-Phase der Entwicklung, die Inspiration für Minecraft. Es hängt gelegentlich. Das Suchen von Google nach der Lösung für solch einen Fall führte mich hierher.
Cory Klein

Antworten:


23

Ich habe sshfsein Verzeichnis von einem SSH-Server eingehängt und meine Netzwerkverbindung wurde unterbrochen. Es scheint, dfals würde versucht, diesen Mount aufzulisten, und anstatt anmutig zu scheitern, blieb er einfach hängen :(


2
Sie können ein fauler Unmount durchführen umount -l /path-to/mount, um dies zu umgehen .
ewwhite

12
Es scheitert nicht, weil es überhaupt nicht scheitert: Es wartet geduldig darauf, dass der Server antwortet.
Gilles 'SO - hör auf böse zu sein'

18
tut df -lArbeit?
Abhishek A

1
@ Gilles: Ein klassisches Beispiel für das Halteproblem.
Casualunixer

Passiert auch mit SMB-Mounts übrigens. Sehr relevant: Das Problem mit der Montage . Und stat Systemaufruf
David Tonhofer

8

Die häufigste Ursache für Software wie das dfHängen ist der Versuch, von einer Festplatte zu lesen, die nicht richtig reagiert.

Überprüfen Sie die Ausgabe von, dmesgum festzustellen, ob dies der Fall ist - ein schuppiges Laufwerk wirft viele Fehler aus.

Leider handelt es sich in der Regel um ein Hardwareproblem, und Sie müssen möglicherweise das gesamte Laufwerk austauschen. Ich empfehle Ihnen, von allem, was Sie können, Backups zu erstellen.


4

Nicht hier der Fall, aber für den Fall, beachten Sie, dass einige Versionen der GNU-Implementierung df(seit Version 7.3, behoben in 8.29 ( mit diesem Commit )) lesbare Fifo / Named Pipe-Dateien ohne Writer enthalten, wie sie es versuchen Öffnen Sie sie (siehe https://debbugs.gnu.org/cgi/bugreport.cgi?bug=29038)

$ mkfifo fifo
$ strace df fifo
[...]
open("fifo", O_RDONLY|O_NOCTTY  # hanging there

Was ist die Lösung für dieses Problem?
karthik101

@ karthik101, siehe edit: upgrade auf 8.29 oder benutze df nicht für fifos.
Stéphane Chazelas

von der Quelle installiert, funktioniert super.
karthik101

2

Meine Ursache war ungewöhnlich, aber ich werde es trotzdem erwähnen, falls jemand den gleichen Fehler macht. Ich habe cifsin /etc/auto.directUbuntu 16.04.4 verwendet (kürzlich von 16.04 aufgerüstet). Ich habe nicht hinzugefügt vers=1.0.

Abwärtskompatibilität - einer der größten Mythen in der Software.



0

Ich habe das gleiche Problem mit dem Neustart unterhalb des für mich funktionierenden Dienstes.

$ systemctl proc-sys-fs-binfmt_misc.mount neu starten


0

Ein weiterer Fall, der in den obigen Antworten nicht behandelt wird:

In meinem Fall mit strace df, fand ich, dass dfbeim Versuch, statfsdas keybaseDateisystem zu hängen :

$ strace df
...   # many lines omitted for brevity
statfs("/run/user/1000/keybase/kbfs", <--- hangs here
^Cstrace: Process 17510 detached

Abmelden (und erneutes Anmelden), um keybasedieses spezielle Problem zu lösen:

$ keybase logout
$ df  # doesn't hang anymore
...

$ keybase login
$ df  # still ok
...
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.