คุณจะได้รับ e2fsck เพื่อแสดงข้อมูลความคืบหน้าได้อย่างไร


42

ฉันใช้ e2fsk บนดิสก์ ext3 ขนาดใหญ่มาก (1TB +) ด้วย

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 ที่ไม่ได้อัปเดตแถบความสมบูรณ์ แต่ในดิสก์ขนาดใหญ่จริง ๆ ใช้เวลานานพอสมควร
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
ดูเหมือนว่าหน้าคนของคุณมีไว้สำหรับ e2fsck รุ่นอื่น ฉันจะโพสต์คำตอบจากเวอร์ชันของฉัน แต่มันใกล้มากและคำตอบของคุณก็เพียงพอที่จะทำให้ฉันอ่านหน้า man ที่ถูกต้อง ขอบคุณมาก ๆ!
Tim Abell

อ่าโทรดี - ฉันได้อัพเดตแล้ว ไม่เป็นไร
วอร์เนอร์

4
อืม ... วันนี้ฉันเรียนรู้แล้ว (สัญญาณ USR สำหรับรับเอาต์พุตนั้นจาก fsck) ขอบคุณสำหรับความรู้ @Warner
Bart Silverstrim

1
แฟล็ก -USR1 มีค่ามาก ฉันสร้างบัญชีที่นี่เพียงเพื่อให้สามารถลงคะแนนได้
Rajesh J Advani

17

จาก man page สำหรับเวอร์ชั่น 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 กระบวนการ

kill -USR1 5079


2
คำตอบนี้เหมือนกับคำตอบที่ยอมรับยกเว้นจะไม่มีข้อมูลเชิงบริบทเพื่อช่วยให้ผู้ใช้เข้าใจว่าทำไมพวกเขาถึงทำตามคำแนะนำของคุณ สำหรับอนาคตโปรดทราบว่าเราต้องการคำตอบที่อธิบายทั้งวิธีการและสาเหตุของการแก้ปัญหา (หลักการ "สอนคนตกปลา")
voretaq7

3

ทำไม?

ระบบ BSD และลูกหลานของพวกเขามีสัญญาณ SIGINFO มันทำให้โปรแกรมที่จะส่งออกสถานะปัจจุบันของพวกเขาไปยังคอนโซล เครื่องมือ BSD พื้นฐานจำนวนมากรู้เกี่ยวกับสัญญาณนี้และสนับสนุน คุณสามารถส่งสัญญาณนี้ไปยังกระบวนการปัจจุบันโดยใช้ Ctrl + T

ระบบ SysV ไม่มีสัญญาณดังกล่าวและไม่มี Ctrl + T ด้วย เครื่องมือ Linux บางตัวรองรับ SIGUSR1 แทน ฉันรู้เพียงเกี่ยวกับ "dd" และ "e2fsck" แต่อาจมีมากกว่านี้ ไม่มี Ctrl + หรือไม่ ทางลัดในการส่งดังนั้นคุณต้องทำด้วยตนเองโดยใช้ "kill -USR1" บน pid ของกระบวนการ

โปรแกรมอื่น ๆ ส่วนใหญ่จะตอบสนองต่อ SIGUSR1 เช่นเดียวกับที่พวกเขาทำปฏิกิริยากับ SIGTERM (ออก) ดังนั้นอย่าส่งสัญญาณนี้จนกว่าคุณจะรู้ว่ามันรองรับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.