Tại sao 'df' treo?


22

Gần đây tôi đã gặp vấn đề khi chạy df, nơi nó chỉ bị treo . Đây là straceđầu ra, và trong đó, bạn sẽ thấy rằng tôi đã chết vì nó chỉ ngồi ở đó:

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

Một công cụ khác không thành công là gnome-system-monitor, nó dường như cũng bị treo ngay lập tức sau khi được tung ra.


Phiên bản coreutils của tôi là 8.13-2, chạy trong Debian Un Ổn định.
tshepang

Bất cứ ai khác ở đây cho pháo đài lùn?
Cory Klein

@CoryKlein: cái gì vậy?
tshepang

1
Một trò chơi trong giai đoạn phát triển alpha, nguồn cảm hứng cho minecraft. Nó thỉnh thoảng bị treo. Tìm kiếm google cho giải pháp cho một hang như vậy đã dẫn tôi đến đây.
Cory Klein

Câu trả lời:


23

Tôi đã sử dụng sshfsđể gắn kết một thư mục từ một số máy chủ ssh và kết nối mạng của tôi bị mất. Có vẻ như dfnó đang cố gắng liệt kê thú cưỡi đó và thay vì thất bại một cách duyên dáng, nó chỉ bị kẹt :(


2
Bạn có thể thực hiện một cách lười biếng umount -l /path-to/mountđể vượt qua điều này.
ewwhite

12
Nó không thất bại một cách duyên dáng bởi vì nó hoàn toàn không thất bại: nó kiên nhẫn chờ đợi máy chủ trả lời.
Gilles 'SO- ngừng trở nên xấu xa'

18
không df -llàm việc
Abhishek A

1
@Gilles: Ví dụ kinh điển về vấn đề dừng.
Casualunixer

Cũng xảy ra với SMB gắn kết btw. Rất liên quan: Rắc rối với việc gắn kết . Và cuộc gọi hệ thống thống kê
David Tonhofer

8

Nguyên nhân phổ biến nhất của phần mềm như dfbị treo là khi họ cố đọc từ đĩa không phản hồi đúng.

Kiểm tra đầu ra từ dmesgđể xem đây có phải là trường hợp không - một ổ đĩa không ổn định sẽ phát sinh rất nhiều lỗi.

Thật không may, điều này có xu hướng là một vấn đề phần cứng và bạn có thể đang xem xét phải thay thế toàn bộ ổ đĩa. Tôi khuyên bạn nên sao lưu mọi thứ bạn có thể.


4

Không phải trường hợp nào ở đây, nhưng đối với bản ghi, lưu ý rằng một số phiên bản triển khai GNU df(kể từ phiên bản 7.3, được sửa trong 8.29 ( với cam kết này )) treo trên các tệp ống có thể đọc được fifo / có tên mà không có trình ghi, khi chúng cố gắng mở chúng, như đã thấy trong https://debbugs.gnu.org/cgi/ormsreport.cgi?orms=29038

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

Cách khắc phục vấn đề này là gì?
karthik101

@ karthik101, xem chỉnh sửa: nâng cấp lên 8.29 hoặc không sử dụng df trên fifos.
Stéphane Chazelas

Cài đặt từ nguồn, hoạt động tuyệt vời.
karthik101

2

Nguyên nhân sâu xa của tôi là một nguyên nhân bất thường nhưng dù sao tôi cũng sẽ đề cập đến nó trong trường hợp có ai mắc lỗi tương tự. Tôi đã sử dụng cifs/etc/auto.directtrên Ubuntu 16.04.4 (gần đây nâng cấp lên từ 16,04). Tôi đã không thêm vers=1.0.

Khả năng tương thích ngược - một trong những huyền thoại lớn nhất trong phần mềm.



0

Tôi đã phải đối mặt với cùng một vấn đề khởi động lại dưới đây dịch vụ làm việc cho tôi.

$ systemctl khởi động lại Proc-sys-fs-binfmt_misc.mount


0

Một trường hợp khác không được nêu trong các câu trả lời trên:

Trong trường hợp của tôi, sử dụng strace df, tôi thấy rằng dfđã treo khi cố gắng statfscác keybasehệ thống tập tin:

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

đăng xuất (và đăng nhập lại) để keybasegiải quyết vấn đề cụ thể này:

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

$ keybase login
$ df  # still ok
...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.