Как вы получаете e2fsck, чтобы показать информацию о прогрессе?

42

Я запускаю e2fsk на очень большом (1 ТБ +) диске ext3 с

e2fsck -v /dev/sda1

из RIPLinux загружается с PXE.

я получил

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

а потом очень длинная пауза ...

Как я могу получить представление об активности?

В идеале, количество выполненных предметов против общего и какого-то ETA.

Тим Абелл
источник
Однако может пройти некоторое время после сообщения «Пропуск 1: проверка узлов, блоков и размеров», прежде чем начнет отображаться строка завершения. Я подозреваю, что есть ранняя фаза Pass 1, которая не обновляет панель завершения, но на действительно больших дисках требуется значительное количество времени.
user2864482

Ответы:

70

-CФлаг будет отображаться индикатор выполнения. Различия в производительности в зависимости от того, как называется fsck.

И очень круто, если e2fsckон уже запущен, вы можете отправить ему USR1сигнал, чтобы начать отображать индикатор выполнения. USR2прекратить. Пример:

killall -USR1 e2fsck

От 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.

Из 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
Похоже, ваша справочная страница предназначена для другой версии e2fsck. Я отправлю ответ из моей версии, но он очень близок, и вашего ответа было достаточно, чтобы я прочитал правую часть справочной страницы. Большое спасибо!
Тим Абелл
Ах, хороший звонок - я обновился. Пожалуйста.
Warner
4
Хм ... сегодня я узнал (сигнал USR для получения этого вывода от fsck). Спасибо за знание, @Warner.
Барт Сильверстрим
1
Флаг -USR1 неоценим. Я создал учетную запись здесь, чтобы я мог проголосовать.
Раджеш Дж Адвани
17

со страницы руководства для версии 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.

так что я думаю, что ответ

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

с идентификатором процесса,

убить -USR1 5079

Бен
источник
2
Этот ответ такой же, как принятый ответ, за исключением того, что он не предоставляет контекстную информацию, которая поможет пользователю понять, почему он следует вашим инструкциям. В будущем, пожалуйста, обратите внимание, что мы предпочитаем ответы, которые объясняют как и почему решения (принцип «научить человека ловить рыбу»).
voretaq7
3

Зачем?

Системы BSD и их потомки имеют сигнал SIGINFO. Это заставляет программы выводить их текущее состояние на консоль. Многие базовые инструменты BSD знают об этом сигнале и поддерживают его. Вы можете отправить этот сигнал текущему процессу, используя Ctrl + T.

Системы SysV не имеют такого сигнала и Ctrl + T тоже. Некоторые из инструментов Linux поддерживают SIGUSR1. Я знаю только о "dd" и "e2fsck", но их может быть больше. Там нет Ctrl +? ярлык для отправки, так что вы должны сделать это вручную, используя «kill -USR1» в pid процесса.

Большинство других программ будут реагировать на SIGUSR1 так же, как они реагируют на SIGTERM (выход), поэтому не отправляйте этот сигнал, если вы не знаете, что он поддерживается.

Dilyin
источник