Comment obtenez-vous e2fsck pour afficher les informations de progression?

42

J'utilise e2fsk sur un très grand disque ext3 (1 To +) avec

e2fsck -v /dev/sda1

de RIPLinux démarré avec PXE.

Je reçois

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

et puis une très longue pause ...

Comment puis-je avoir une idée de l'activité?

Idéalement, un nombre d'éléments terminés par rapport au total et une sorte d'ETA.

Tim Abell
la source
Toutefois, il peut s'écouler un certain temps après le message "Étape 1: Vérification des inodes, des blocs et des tailles" avant que la barre d'achèvement ne commence à s'afficher. Je soupçonne qu’une des premières phases du premier passage ne met pas à jour la barre d’achèvement, mais que sur de très grands disques, cela prend beaucoup de temps.
user2864482

Réponses:

70

Le -Cdrapeau affichera une barre de progression. Différences de performances en fonction de la manière dont fsck est appelé.

Et très cool, si e2fsckest déjà en cours d'exécution, vous pouvez envoyer un USR1signal pour qu'il commence à afficher une barre de progression. USR2arrêter. Exemple:

killall -USR1 e2fsck

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

De 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
la source
2
Il semble que votre page de manuel concerne une version différente de e2fsck. Je posterai une réponse de ma version, mais elle est très proche et votre réponse suffit à me faire lire le bon extrait de la page de manuel. Merci beaucoup!
Tim Abell
Ah, bon appel-- j'ai mis à jour. De rien.
Warner
4
Hmm ... aujourd'hui j'ai appris (le signal USR pour obtenir cette sortie de fsck). Merci pour la connaissance, @Warner.
Bart Silverstrim
1
Le drapeau -USR1 est inestimable. J'ai créé un compte ici juste pour pouvoir voter.
Rajesh J Advani
17

depuis la page de manuel pour la 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.

donc je suppose que la réponse est

e2fsck -C 0 /dev/sda1
Tim Abell
la source
3

ps -ef | grep fsck

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

avec l'ID de processus,

tuer -USR1 5079

ben
la source
2
Cette réponse est identique à la réponse acceptée, sauf qu'elle ne fournit aucune information contextuelle pouvant aider l'utilisateur à comprendre pourquoi il suit vos instructions. Pour l’avenir, veuillez noter que nous préférons les réponses qui expliquent à la fois le comment et le pourquoi d’une solution (principe "enseignez à un homme à pêcher").
voretaq7
3

Pourquoi?

Les systèmes BSD et leurs descendants ont un signal SIGINFO. Il crée des programmes pour afficher leur statut actuel sur la console. De nombreux outils BSD de base connaissent ce signal et le prennent en charge. Vous pouvez envoyer ce signal à un processus en cours en utilisant Ctrl + T.

Les systèmes SysV n'ont pas ce signal et pas de Ctrl + T aussi. Certains outils Linux prennent en charge SIGUSR1 à la place. Je ne connais que "dd" et "e2fsck" mais il peut y en avoir plus. Il n'y a pas de Ctrl +? raccourci pour l’envoyer, vous devez donc le faire manuellement en utilisant "kill -USR1" sur le pid du processus.

La plupart des autres programmes réagissent à SIGUSR1 de la même manière qu’ils réagissent à SIGTERM (sortie), aussi n’envoyez pas ce signal à moins que vous ne sachiez qu’il est pris en charge.

Dilyin
la source