Wie bringt man e2fsck dazu, Fortschrittsinformationen anzuzeigen?

42

Ich verwende e2fsk auf einer sehr großen (1 TB +) ext3-Festplatte mit

e2fsck -v /dev/sda1

von RIPLinux mit PXE gebootet.

Ich bekomme

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

und dann eine sehr lange Pause ...

Wie bekomme ich eine Vorstellung von der Aktivität?

Idealerweise wird die Anzahl der abgeschlossenen Artikel mit der Gesamtanzahl und einer Art ETA verglichen.

Tim Abell
quelle
Es kann jedoch eine Weile dauern, bis die Meldung "Pass 1: Inodes, Blöcke und Größen prüfen" angezeigt wird. Ich vermute, dass es eine frühe Phase von Pass 1 gibt, in der die Abschlussleiste nicht aktualisiert wird, bei sehr großen Datenträgern jedoch eine erhebliche Zeit erforderlich ist.
User2864482

Antworten:

70

Die -CFlagge zeigt einen Fortschrittsbalken an. Leistungsunterschiede je nachdem, wie fsck aufgerufen wird.

Und sehr cool, wenn e2fsckes bereits läuft, können Sie ein USR1Signal senden , damit eine Fortschrittsleiste angezeigt wird. USR2stoppen. Beispiel:

killall -USR1 e2fsck

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

Aus 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
quelle
2
Es sieht so aus, als ob Ihre Manpage für eine andere Version von e2fsck ist. Ich werde eine Antwort aus meiner Version posten, aber sie ist sehr nah und Ihre Antwort hat gereicht, um mich dazu zu bringen, das richtige Stück der Manpage zu lesen. Vielen Dank!
Tim Abell
Ah, guter Anruf - ich habe aktualisiert. Bitte.
Warner
4
Hmm ... heute habe ich gelernt (das USR-Signal für die Ausgabe von fsck). Vielen Dank für das Wissen, @ Warner.
Bart Silverstrim
1
Das Flag -USR1 ist von unschätzbarem Wert. Ich habe hier einen Account erstellt, um meine Meinung zu verbessern.
Rajesh J Advani
17

von der Manpage für Version 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.

Ich denke also, die Antwort ist

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

ps -ef | grep fsck

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

mit der Prozess-ID,

kill -USR1 5079

ben
quelle
2
Diese Antwort ist die gleiche wie die akzeptierte, außer dass sie keine Kontextinformationen enthält, die dem Benutzer helfen, zu verstehen, warum er Ihren Anweisungen folgt. Für die Zukunft beachten Sie bitte, dass wir Antworten bevorzugen, die sowohl das Wie als auch das Warum einer Lösung erläutern (das Prinzip "Einem Menschen das Fischen beibringen").
Voretaq7
3

Warum?

BSD-Systeme und ihre Nachkommen haben das SIGINFO-Signal. Damit können Programme ihren aktuellen Status auf der Konsole ausgeben. Viele grundlegende BSD-Tools kennen dieses Signal und unterstützen es. Sie können dieses Signal mit Strg + T an einen aktuellen Prozess senden.

SysV-Systeme haben kein solches Signal und auch kein Strg + T. Einige Linux-Tools unterstützen stattdessen SIGUSR1. Ich weiß nur über "dd" und "e2fsck" Bescheid, aber es kann noch mehr geben. Es gibt keine Strg +? Verknüpfung, um es zu senden, so müssen Sie es manuell mit "kill -USR1" auf der PID des Prozesses tun.

Die meisten anderen Programme reagieren auf SIGUSR1 genauso wie auf SIGTERM (Verlassen). Senden Sie dieses Signal nur, wenn Sie wissen, dass es unterstützt wird.

Dilyin
quelle