您如何获得e2fsck显示进度信息?


42

我在一个非常大的(1TB +)ext3磁盘上运行e2fsk

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:检查inode,块和大小”消息之后,可能需要一段时间才能显示完成栏。我怀疑Pass 1的早期阶段不会更新完成栏,但是在非常大的磁盘上会花费大量时间。
user2864482 2014年

Answers:


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。我会从我的版本中发布答案,但它非常接近,您的答案足以使我阅读正确的手册页。非常感谢!
蒂姆·阿贝尔

好的,打个电话-我已经更新了。别客气。
华纳2010年

4
嗯...今天我学会了(从fsck获得该输出的USR信号)。感谢您的知识,@ Warner。
巴特·

1
-USR1标志非常重要。我在这里创建了一个帐户,以便可以投票。
Rajesh J Advani 2014年

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

带有进程ID

杀死-USR1 5079


2
这个答案是一样的接受的答案,但它不提供上下文信息,以帮助用户了解为什么他们按照你的指令。对于未来,请注意,我们希望使用能够解释解决方案的方式和原因(“教人钓鱼”原则)的答案。
voretaq7

3

为什么?

BSD Systems及其子代具有SIGINFO信号。它使程序将其当前状态输出到控制台。许多基本的BSD工具都知道并支持该信号。您可以使用Ctrl + T将此信号发送到当前进程。

SysV系统没有此类信号,也没有Ctrl + T。某些Linux工具改为支持SIGUSR1。我只知道“ dd”和“ e2fsck”,但还有更多。没有Ctrl +吗?发送它的快捷方式,因此您必须在进程的pid上使用“ kill -USR1”手动进行操作。

大多数其他程序对SIGUSR1的反应方式与对SIGTERM(退出)的反应方式相同,因此除非您知道该信号受支持,否则不要发送此信号。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.