Como você faz com que o e2fsck mostre informações de progresso?


42

Estou executando o e2fsk em um disco ext3 muito grande (1TB +) com

e2fsck -v /dev/sda1

do RIPLinux inicializado com PXE.

eu recebo

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

e depois uma pausa muito longa ...

Como faço para ter uma ideia da atividade?

Idealmente, uma contagem de itens concluídos vs total e algum tipo de ETA.


No entanto, pode demorar um pouco após a mensagem "Passe 1: Verificar inodes, blocos e tamanhos" antes que a barra de conclusão comece a ser exibida. Suspeito que exista uma fase inicial do Passe 1 que não atualize a barra de conclusão, mas em discos muito grandes leva um tempo significativo.
precisa saber é o seguinte

Respostas:


70

A -Cbandeira exibirá uma barra de progresso. Diferenças de desempenho dependendo de como o fsck é chamado.

E muito legal, se e2fsckjá estiver em execução, você pode enviar um USR1sinal para que ele comece a exibir uma barra de progresso. USR2parar. Exemplo:

killall -USR1 e2fsck

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

Do 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
Parece que sua página de manual é para uma versão diferente do e2fsck. Vou postar uma resposta da minha versão, mas é muito próxima e sua resposta foi suficiente para me fazer ler o trecho certo da página de manual. Muito obrigado!
quer

Ah, boa ligação ... Eu atualizei. De nada.
Warner

4
Hmm ... hoje eu aprendi (o sinal USR para obter essa saída do fsck). Obrigado pelo conhecimento, @Warner.
Bart Silverstrim

1
O sinalizador -USR1 é inestimável. Eu criei uma conta aqui apenas para poder votar.
Rajesh J Advani

17

da página de manual da versão 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.

então eu acho que a resposta é

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

com o ID do processo,

kill -USR1 5079


2
Essa resposta é igual à resposta aceita, exceto que não fornece informações contextuais para ajudar o usuário a entender por que está seguindo suas instruções. Para o futuro, observe que preferimos respostas que expliquem o Como e o Por que de uma solução (o princípio "ensine um homem a pescar").
precisa saber é o seguinte

3

Por quê?

Os sistemas BSD e seus descendentes possuem sinal SIGINFO. Faz com que os programas exibam seu status atual no console. Muitas ferramentas básicas do BSD conhecem e dão suporte a esse sinal. Você pode enviar esse sinal para um processo atual usando Ctrl + T.

Os sistemas SysV não possuem esse sinal nem Ctrl + T também. Algumas das ferramentas Linux suportam o SIGUSR1. Eu sei apenas sobre "dd" e "e2fsck", mas pode haver mais. Não há Ctrl +? atalho para enviá-lo, então você deve fazê-lo manualmente usando "kill -USR1" no pid do processo.

A maioria dos outros programas reage ao SIGUSR1 da mesma forma que reage ao SIGTERM (saída); portanto, não envie esse sinal, a menos que você saiba que ele é suportado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.