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.

Tshepang
quelle
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 :(

Tshepang
quelle
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.

Nathan Franzmeier
quelle
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
Stéphane Chazelas
quelle
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.

Sridhar Sarnobat
quelle
0

Es funktioniert tatsächlich auf df 8.25. Das Problem wurde nach dem Update auf xenial behoben

user279293
quelle
1
Dies scheint Stephanes Antwort zu widersprechen . Können Sie Ihren Anspruch belegen?
Kusalananda
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

user60679
quelle
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
...
Arielf
quelle