W jaki sposób e2fsck wyświetla informacje o postępach?

42

Używam e2fsk na bardzo dużym (1 TB +) dysku ext3 z

e2fsck -v /dev/sda1

z RIPLinux uruchomionego z PXE.

dostaję

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

a potem bardzo długa pauza ...

Jak uzyskać pojęcie o działalności?

Idealnie jest to liczba ukończonych przedmiotów w stosunku do całości i pewnego rodzaju ETA.

Tim Abell
źródło
Może jednak upłynąć trochę czasu po komunikacie „Przejście 1: Sprawdzanie i-węzłów, bloków i rozmiarów”, zanim zacznie się wyświetlać pasek ukończenia. Podejrzewam, że istnieje wczesna faza Pass 1, która nie aktualizuje paska ukończenia, ale na naprawdę dużych dyskach zajmuje dużo czasu.
user2864482,

Odpowiedzi:

70

-CFlaga zostanie wyświetlony pasek postępu. Różnice wydajności zależą od tego, jak wywoływany jest fsck.

I bardzo fajnie, jeśli e2fsckjuż działa, możesz wysłać USR1sygnał, aby zaczął wyświetlać pasek postępu. USR2zatrzymać. Przykład:

killall -USR1 e2fsck

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

Z 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
źródło
2
Wygląda na to, że twoja strona podręcznika dotyczy innej wersji e2fsck. Wyślę odpowiedź z mojej wersji, ale jest bardzo blisko, a twoja odpowiedź wystarczyła, aby przeczytać odpowiednią część strony podręcznika. Dziękuję bardzo!
Tim Abell,
Ach, dobra rozmowa - zaktualizowałem. Nie ma za co.
Warner
4
Hmm ... dzisiaj się nauczyłem (sygnał USR dla uzyskania tego wyjścia z fsck). Dzięki za wiedzę, @Warner.
Bart Silverstrim,
1
Flaga -USR1 jest nieoceniona. Utworzyłem tutaj konto, aby móc głosować.
Rajesh J Advani
17

ze strony podręcznika dla wersji 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.

więc myślę, że odpowiedź brzmi

e2fsck -C 0 /dev/sda1
Tim Abell
źródło
3

ps -ef | grep fsck

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

z identyfikatorem procesu,

zabij -USR1 5079

ben
źródło
2
Ta odpowiedź jest taka sama jak odpowiedź zaakceptowana, z tym wyjątkiem, że nie zawiera informacji kontekstowych, aby pomóc użytkownikowi zrozumieć, dlaczego postępuje zgodnie z instrukcjami. W przyszłości zauważ, że wolimy odpowiedzi wyjaśniające zarówno sposób, jak i dlaczego rozwiązania (zasada „naucz człowieka łowić ryby”).
voretaq7
3

Dlaczego?

Systemy BSD i ich potomkowie mają sygnał SIGINFO. Sprawia, że ​​programy wyświetlają swój bieżący status na konsoli. Wiele podstawowych narzędzi BSD zna ten sygnał i obsługuje go. Możesz wysłać ten sygnał do bieżącego procesu za pomocą Ctrl + T.

Systemy SysV również nie mają takiego sygnału ani Ctrl + T. Niektóre narzędzia Linux obsługują zamiast tego SIGUSR1. Wiem tylko o „dd” i „e2fsck”, ale może być ich więcej. Nie ma Ctrl +? skrót, aby go wysłać, więc musisz to zrobić ręcznie, używając „kill -USR1” na pid procesu.

Większość innych programów reaguje na SIGUSR1 w taki sam sposób, jak reaguje na SIGTERM (wyjście), więc nie wysyłaj tego sygnału, chyba że wiesz, że jest obsługiwany.

Dilyin
źródło