¿Cómo se obtiene e2fsck para mostrar información de progreso?

42

Estoy ejecutando e2fsk en un disco ext3 muy grande (1TB +) con

e2fsck -v /dev/sda1

de RIPLinux arrancado con PXE.

yo obtengo

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

y luego una pausa muy larga ...

¿Cómo me hago una idea de la actividad?

Idealmente, un recuento de elementos completados vs total y algún tipo de ETA.

Tim Abell
fuente
Sin embargo, puede pasar un tiempo después del mensaje "Paso 1: Verificación de inodos, bloques y tamaños" antes de que aparezca la barra de finalización. Sospecho que hay una fase temprana del Pase 1 que no actualiza la barra de finalización, pero en discos realmente grandes lleva una cantidad significativa de tiempo.
user2864482

Respuestas:

70

La -Cbandera mostrará una barra de progreso. Las diferencias de rendimiento dependen de cómo se llama fsck.

Y muy bueno, si e2fsckya se está ejecutando, puede enviar una USR1señal para que comience a mostrar una barra de progreso. USR2para detener. Ejemplo:

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
fuente
2
Parece que su página de manual es para una versión diferente de e2fsck. Publicaré una respuesta de mi versión, pero está muy cerca y su respuesta fue suficiente para hacerme leer la parte correcta de la página del manual. ¡Muchas gracias!
Tim Abell
Ah, buena llamada. He actualizado. De nada.
Warner
44
Hmm ... hoy aprendí (la señal USR para obtener esa salida de fsck). Gracias por el conocimiento, @Warner.
Bart Silverstrim
1
La bandera -USR1 es invaluable. Creé una cuenta aquí solo para poder votar.
Rajesh J Advani
17

de la página del manual para la versió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.

así que supongo que la respuesta es

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

ps -ef | grep fsck

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

con la identificación del proceso,

kill -USR1 5079

ben
fuente
2
Esta respuesta es la misma que la respuesta aceptada, excepto que no proporciona información contextual para ayudar al usuario a comprender por qué siguen sus instrucciones. Para el futuro, tenga en cuenta que preferimos respuestas que expliquen tanto el Cómo y el Por qué de una solución (el principio de "enseñar a un hombre a pescar").
voretaq7
3

¿Por qué?

Los sistemas BSD y sus descendientes tienen señal SIGINFO. Hace que los programas muestren su estado actual a la consola. Muchas herramientas BSD básicas conocen esta señal y la admiten. Puede enviar esta señal a un proceso actual usando Ctrl + T.

Los sistemas SysV no tienen tal señal y tampoco Ctrl + T. Algunas de las herramientas de Linux admiten SIGUSR1 en su lugar. Solo sé sobre "dd" y "e2fsck", pero puede haber más. No hay Ctrl +? acceso directo para enviarlo, por lo que debe hacerlo manualmente usando "kill -USR1" en el pid del proceso.

La mayoría de los otros programas reaccionarán a SIGUSR1 de la misma manera que reaccionan a SIGTERM (salir), así que no envíe esta señal a menos que sepa que es compatible.

Dilyin
fuente