Làm thế nào để bạn có được e2fsck để hiển thị thông tin tiến trình?


42

Tôi đang chạy e2fsk trên đĩa ext3 rất lớn (1TB +) với

e2fsck -v /dev/sda1

từ RIPLinux đã khởi động với PXE.

tôi có

e2fsck 1.41.6 (30-May-2009)
/dev/sda1 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes

và sau đó một khoảng dừng rất dài ...

Làm thế nào để tôi có được một số ý tưởng của hoạt động?

Lý tưởng nhất là số lượng các mục hoàn thành so với tổng số và một số loại ETA.


Tuy nhiên, có thể mất một lúc sau thông báo "Đạt 1: Kiểm tra các nút, khối và kích thước" trước khi thanh hoàn thành bắt đầu hiển thị. Tôi nghi ngờ có giai đoạn đầu của Pass 1 không cập nhật thanh hoàn thành, nhưng trên các đĩa thực sự lớn cần một lượng thời gian đáng kể.
dùng2864482

Câu trả lời:


70

Các -Clá cờ sẽ hiển thị một thanh tiến trình. Hiệu suất khác nhau tùy thuộc vào cách gọi fsck.

Và rất tuyệt, nếu e2fsckđã chạy, bạn có thể gửi USR1tín hiệu cho nó để bắt đầu hiển thị thanh tiến trình. USR2dừng lại. Thí dụ:

killall -USR1 e2fsck

Từ FSCK (8):

   -C     Display completion/progress bars for those filesys-
          tems  checkers (currently only for ext2) which sup-
          port them.   Fsck will manage the filesystem check-
          ers  so  that  only  one  of  them  will  display a
          progress bar at a time.

Từ E2FSCK (8):

   -C fd  This  option  causes  e2fsck  to  write  completion
          information  to  the  specified  file descriptor so
          that the progress of the filesystem  check  can  be
          monitored.   This  option is typically used by pro-
          grams  which  are  running  e2fsck.   If  the  file
          descriptor specified is 0, e2fsck will print a com-
          pletion bar as it goes about  its  business.   This
          requires  that e2fsck is running on a video console
          or terminal.

2
Có vẻ như trang người đàn ông của bạn dành cho một phiên bản khác của e2fsck. Tôi sẽ đăng câu trả lời từ phiên bản của tôi, nhưng nó rất gần và câu trả lời của bạn đủ để khiến tôi đọc đúng trang của người đàn ông. Cảm ơn rất nhiều!
Tim Abell

À, cuộc gọi tốt-- Tôi đã cập nhật. Không có gì.
Warner

4
Hmm ... hôm nay tôi đã học được (tín hiệu USR để nhận đầu ra đó từ fsck). Cảm ơn vì kiến ​​thức, @Warner.
Bart Silverstrim

1
Cờ -USR1 là vô giá. Tôi đã tạo một tài khoản ở đây chỉ để tôi có thể upvote.
Rajesh J Advani

17

từ trang man cho phiên bản 1.41

   -C fd  This option causes e2fsck to write completion information to the specified file descriptor so that the progress of the
          filesystem  check  can be monitored.  This option is typically used by programs which are running e2fsck.  If the file
          descriptor number is negative, then absolute value of the file descriptor will be used, and the  progress  information
          will  be  suppressed  initially.  It can later be enabled by sending the e2fsck process a SIGUSR1 signal.  If the file
          descriptor specified is 0, e2fsck will print a completion bar as it goes  about  its  business.   This  requires  that
          e2fsck is running on a video console or terminal.

vì vậy tôi đoán câu trả lời là

e2fsck -C 0 /dev/sda1

3

ps -ef | grep fsck

  5079  5007 47 00:55 pts/1    00:08:25 /sbin/fsck.ext3 -yv /dev/hda2

với ID tiến trình,

giết -USR1 5079


2
Câu trả lời này giống như câu trả lời được chấp nhận, ngoại trừ nó không cung cấp thông tin theo ngữ cảnh để giúp người dùng hiểu lý do tại sao họ làm theo hướng dẫn của bạn. Trong tương lai, xin lưu ý rằng chúng tôi thích các câu trả lời giải thích cả Cách thức và lý do giải pháp (nguyên tắc "dạy một người đàn ông câu cá").
voretaq7

3

Tại sao?

Hệ thống BSD và con cháu của họ có tín hiệu SIGINFO. Nó làm cho các chương trình xuất trạng thái hiện tại của chúng ra bàn điều khiển. Rất nhiều công cụ BSD cơ bản biết về tín hiệu này và hỗ trợ nó. Bạn có thể gửi tín hiệu này đến một quy trình hiện tại bằng cách sử dụng Ctrl + T.

Hệ thống SysV không có tín hiệu như vậy và cũng không có Ctrl + T. Thay vào đó, một số công cụ Linux hỗ trợ SIGUSR1. Tôi chỉ biết về "dd" và "e2fsck" nhưng có thể có nhiều hơn nữa. Không có Ctrl +? phím tắt để gửi nó, vì vậy bạn phải thực hiện thủ công bằng cách sử dụng "kill -USR1" trên pid của tiến trình.

Hầu hết các chương trình khác sẽ phản ứng với SIGUSR1 giống như cách chúng phản ứng với SIGTERM (thoát), vì vậy đừng gửi tín hiệu này trừ khi bạn biết rằng nó được hỗ trợ.

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.