it-swarm-vi.com

Tìm hiểu những gì quá trình đang ghi vào ổ cứng

Trên Lenovo T400 và Ubuntu của tôi, đèn báo cho ổ cứng tiếp tục nhấp nháy. Tôi đã tự hỏi nếu trong Linux, có thể tìm ra các quá trình đang làm I/O cho ổ cứng không? Cũng giống như bởi top, bạn có thể tìm hiểu các quy trình đang sử dụng hầu hết CPU và bộ nhớ.

33
Tim

Iotop là một công cụ tốt cho những gì bạn muốn. Nó cũng cho phép một người hiển thị số lượng I/O tích lũy trên bất kỳ DISK READ, DISK WRITE, SWAPIN và IO (tỷ lệ phần trăm tổng thể). Điều này thông qua giao diện tiện lợi:

  • Bạn chỉ cần nhấn a trên bàn phím và nó sẽ sắp xếp các quá trình đói nhất lên trên.
  • Đảo ngược thứ tự, bạn chỉ cần nhấn r.
  • Nếu bạn muốn sắp xếp theo các colums khác, bạn chỉ cần nhấn phím trái/phải.

Giống như top, bản trình bày khá bận rộn. Một điều nữa là nó không có vô số tùy chọn mà top có (ví dụ: tôi không thể chọn ẩn bất kỳ các cột tôi không quan tâm), nhưng công cụ này không đủ tốt cho mục đích cụ thể của nó.

42
tshepang

Bạn có thể sử dụng lsof ( man lsof ). Sau đây sẽ trả về một danh sách tất cả các tệp được mở để viết:

lsof | grep -e "[[:digit:]]\+w"
15
James Sumners

Sử dụng strace.

2
user541686

Đặc biệt đối với hoạt động của đĩa thấp, cần sử dụng iotop ở chế độ hàng loạt, để ngăn các dòng truy cập ngắn biến mất nhanh chóng. Câu trả lời của Làm cách nào để ghi nhật ký hệ thống tệp đọc/ghi theo tên tệp trong Linux? chỉ ra cách thực hiện việc này.

Cho đến nay iotop là giải pháp tổng thể tốt nhất. Lệnh sau cung cấp cho bạn một đầu ra thời gian thực của tất cả các quy trình sử dụng đĩa.

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

Khi bạn có id tiến trình, bạn cũng có thể tìm thấy các tệp với

 lsof -p $PID
2
Frank Breitling