Mengapa 'df' digantung?

22

Saya baru-baru ini mengalami masalah berjalan df, di mana ia hang . Inilah straceoutput, dan di dalamnya, Anda akan melihat bahwa saya membunuh karena hanya duduk di sana:

$ 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 ...>

Alat lain yang gagal adalah gnome-system-monitor, yang juga tampaknya hang segera setelah diluncurkan.

tepang
sumber
Versi coreutils saya adalah 8.13-2, berjalan di Debian Unstable.
tshepang
Adakah yang lain di sini untuk benteng kerdil?
Cory Klein
@CoryKlein: apa itu?
tshepang
1
Sebuah game dalam tahap pengembangan alpha, inspirasi untuk minecraft. Terkadang hang. Mencari google untuk solusi untuk hanya semacam itu membuat saya di sini.
Cory Klein

Jawaban:

23

Saya biasa sshfsmemasang direktori dari beberapa ssh server, dan koneksi jaringan saya terputus. Tampaknya dfsedang mencoba untuk mendaftar mount itu dan bukannya gagal dengan anggun, itu malah macet :(

tepang
sumber
2
Anda dapat melakukan unmount dengan malas umount -l /path-to/mountuntuk menyiasati ini.
ewwhite
12
Itu tidak gagal dengan anggun karena tidak gagal sama sekali: ia dengan sabar menunggu server untuk membalas.
Gilles 'SO- stop being evil'
18
apakah df -lbekerja?
Abhishek A
1
@Gilles: Contoh klasik dari Masalah Pemutusan Hubungan.
casualunixer
Juga terjadi dengan SMB mounts btw. Sangat relevan: Masalah dengan Mounting . Dan panggilan sistem stat
David Tonhofer
8

Penyebab paling umum dari perangkat lunak seperti dfmenggantung adalah ketika mereka mencoba membaca dari disk yang tidak merespons dengan benar.

Periksa output dari dmesguntuk melihat apakah ini yang terjadi - drive yang keripik akan membuang banyak kesalahan.

Sayangnya, ini cenderung menjadi masalah perangkat keras dan Anda mungkin harus mengganti seluruh drive. Saya sarankan Anda membuat cadangan dari semua yang Anda bisa.

Nathan Franzmeier
sumber
4

Tidak demikian halnya di sini, tetapi sebagai catatan, perhatikan bahwa beberapa versi implementasi GNU df(sejak versi 7.3, diperbaiki pada 8.29 ( dengan komit ini )) bertahan pada file pipa fifo / bernama yang dapat dibaca yang tidak memiliki penulis, ketika mereka mencoba untuk buka, seperti yang terlihat di 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
sumber
Apa perbaikan untuk masalah ini?
karthik101
@ karthik101, baca edit: tingkatkan ke 8.29 atau jangan gunakan df di fifos.
Stéphane Chazelas
diinstal dari sumber, berfungsi dengan baik.
karthik101
2

Penyebab utama saya adalah hal yang tidak biasa tetapi saya akan tetap menyebutkannya kalau-kalau ada yang melakukan kesalahan yang sama. Saya menggunakan cifsdi /etc/auto.directpada Ubuntu 16.04.4 (baru-baru ini ditingkatkan dari 16.04). Saya tidak menambahkan vers=1.0.

Kompatibilitas mundur - salah satu mitos terbesar dalam perangkat lunak.

Sridhar Sarnobat
sumber
0

Ini benar-benar berfungsi pada df 8.25 memperbaiki masalah setelah pembaruan pada xenial

pengguna279293
sumber
1
Ini sepertinya bertentangan dengan jawaban Stephane . Bisakah Anda mendukung klaim Anda?
Kusalananda
0

Saya menghadapi masalah yang sama me-restart layanan di bawah ini bekerja untuk saya.

$ systemctl restart proc-sys-fs-binfmt_misc.mount

pengguna60679
sumber
0

Kasus lain yang tidak dicakup dalam jawaban di atas:

Dalam kasus saya, menggunakan strace df, saya menemukan dfitu tergantung ketika mencoba ke statfssistem keybasefile:

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

keluar (dan masuk kembali) untuk keybasememecahkan masalah khusus ini:

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

$ keybase login
$ df  # still ok
...
diri sendiri
sumber