Bagaimana Anda mendapatkan e2fsck untuk menampilkan informasi kemajuan?

42

Saya menjalankan e2fsk pada disk ext3 (1TB +) yang sangat besar

e2fsck -v /dev/sda1

dari RIPLinux di-boot dengan PXE.

saya mendapat

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

dan kemudian jeda yang sangat lama ...

Bagaimana saya mendapat ide kegiatan?

Idealnya hitungan item selesai vs total dan beberapa jenis ETA.

Tim Abell
sumber
Namun, mungkin perlu beberapa saat setelah pesan "Lulus 1: Memeriksa inode, blok, dan ukuran" sebelum bilah penyelesaian mulai muncul. Saya menduga ada tahap awal Pass 1 yang tidak memperbarui bilah penyelesaian, tetapi pada disk yang sangat besar membutuhkan banyak waktu.
user2864482

Jawaban:

70

The -Cbendera akan menampilkan progress bar. Perbedaan kinerja tergantung pada bagaimana fsck dipanggil.

Dan sangat keren, jika e2fscksudah berjalan, Anda dapat mengirim USR1sinyal agar mulai menampilkan bilah kemajuan. USR2untuk berhenti. Contoh:

killall -USR1 e2fsck

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

Dari 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.
Warner
sumber
2
Sepertinya halaman manual Anda adalah untuk versi e2fsck yang berbeda. Saya akan memposting jawaban dari versi saya, tetapi sangat dekat dan jawaban Anda cukup membuat saya membaca sedikit halaman manual. Terima kasih banyak!
Tim Abell
Ah, panggilan bagus - Saya telah memperbarui. Sama-sama.
Warner
4
Hmm ... hari ini saya belajar (sinyal USR untuk mendapatkan output dari fsck). Terima kasih atas pengetahuannya, @Warner.
Bart Silverstrim
1
Bendera -USR1 sangat berharga. Saya membuat akun di sini supaya saya bisa meningkatkan.
Rajesh J Advani
17

dari halaman manual untuk versi 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.

jadi saya kira jawabannya adalah

e2fsck -C 0 /dev/sda1
Tim Abell
sumber
3

ps-id | grep fsck

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

dengan ID proses,

bunuh -USR1 5079

ben
sumber
2
Jawaban ini sama dengan jawaban yang diterima, kecuali tidak memberikan informasi kontekstual untuk membantu pengguna memahami mengapa mereka mengikuti instruksi Anda. Untuk masa depan harap dicatat bahwa kami lebih suka jawaban yang menjelaskan baik bagaimana dan mengapa solusi (prinsip "ajarlah manusia memancing").
voretaq7
3

Mengapa?

Sistem BSD dan turunannya memiliki sinyal SIGINFO. Itu membuat program untuk menampilkan status mereka saat ini ke konsol. Banyak alat BSD dasar tahu tentang sinyal ini dan mendukungnya. Anda dapat mengirim sinyal ini ke proses saat ini menggunakan Ctrl + T.

Sistem SysV tidak memiliki sinyal seperti itu dan tidak ada Ctrl + T juga. Beberapa alat Linux mendukung SIGUSR1 sebagai gantinya. Saya hanya tahu tentang "dd" dan "e2fsck" tetapi mungkin ada lebih banyak. Tidak ada Ctrl +? pintas untuk mengirimnya, jadi Anda harus melakukannya secara manual dengan menggunakan "kill -USR1" pada pid dari proses.

Sebagian besar program lain akan bereaksi terhadap SIGUSR1 dengan cara yang sama mereka bereaksi terhadap SIGTERM (keluar) jadi jangan mengirim sinyal ini kecuali Anda tahu bahwa itu didukung.

Dilyin
sumber