Як ви отримуєте 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

а потім дуже довга пауза ...

Як отримати уявлення про діяльність?

В ідеалі - кількість готових предметів проти загальної кількості та певної кількості еталонів.


Однак після повідомлення "Pass 1: Перевірка вводів, блоків та розмірів" може пройти деякий час, перш ніж починається показ панелі завершення. Я підозрюю, що існує рання фаза Pass 1, яка не оновлює панель завершення, але на дійсно великих дисках потрібна значна кількість часу.
користувач2864482

Відповіді:


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
Схоже, ваша сторінка man призначена для іншої версії e2fsck. Я опублікую відповідь з моєї версії, але вона дуже близька, і вашої відповіді було достатньо, щоб змусити мене прочитати потрібний біт сторінки man. Дуже дякую!
Тім Абелл

Ах, хороший дзвінок - я оновив. Ласкаво просимо.
Warner

4
Гм ... сьогодні я дізнався (сигнал USR для отримання цього виходу з fsck). Дякую за знання, @Warner.
Барт Сільверстрім

1
Прапор -USR1 неоціненний. Я створив тут обліковий запис просто для того, щоб я міг подати заявку.
Rajesh J Advani

17

зі сторінки man для версії 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

пс -еф | 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 (вихід), тому не надсилайте цей сигнал, якщо ви не знаєте, що він підтримується.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.