/ / วิธีการติดตามความคืบหน้าของคำสั่ง Linux (ด้วย pv และความคืบหน้า)

วิธีการติดตามความคืบหน้าของคำสั่ง Linux (ด้วย pv และความคืบหน้า)

Linux terminal prompt บนแล็ปท็อป

แทนที่จะบินตาบอดใช้ Linux pv และ progress คำสั่งเพื่อติดตามความคืบหน้าของคำสั่ง ยูทิลิตี้เหล่านี้จะให้แถบความคืบหน้าสำหรับคำสั่งที่ปกติไม่มี คุณจะเห็นเวลาโดยประมาณจนกว่าจะเสร็จสมบูรณ์เช่นกัน

หากคุณกำลังเดินทางด้วยเครื่องบินเป็นระยะเวลานานหากไม่มีหน้าจอวิดีโอในที่นั่งด้านหลังคุณจะไม่สามารถรู้ได้ว่าคุณเดินทางไปไกลแค่ไหน คุณรู้เมื่อคุณออก คุณรู้ว่าต้องใช้เวลาเดินทางนานแค่ไหน แต่คุณจะรู้ได้อย่างไรว่าคุณอยู่ในเส้นทางที่ตรงเวลาหรือช้ากว่ากำหนด? หากคุณไม่ต้องการดูภาพยนตร์บนเครื่องบินคุณสามารถสลับหน้าจอวิดีโอของคุณเพื่อแสดงแผนที่ด้วยตำแหน่งเครื่องบินของคุณได้ คุณยังได้รับสถิติบางอย่างเช่นเวลาที่คาดว่าจะมาถึง (ETA) ซึ่งยอดเยี่ยมมาก

การเริ่มต้นคำสั่งจากหน้าต่างเทอร์มินัลสามารถบางครั้งรู้สึกเหมือนเที่ยวบินระยะไกลโดยไม่มีหน้าจอวิดีโอ คุณไม่มีอะไรที่จะบ่งบอกอะไรเลยถ้าทุกอย่างเป็นไปด้วยดีหรือถ้ากระบวนการหยุดทำงานหรือไม่ใกล้จะเสร็จสมบูรณ์ เคอร์เซอร์ที่กะพริบไม่ให้ข้อมูลมากนัก

คน pv และ progress คำสั่งให้สถิติบางอย่างกับคุณเล็กน้อยข้อเสนอแนะภาพ คุณสามารถดูว่ากระบวนการเสร็จสิ้นแล้วอย่างไร นั่นหมายความว่าคุณจะได้รับ ETA สำหรับกระบวนการทำงานของคุณ เมื่อเทียบกับการจ้องมองที่เคอร์เซอร์

กำลังติดตั้ง pv

คุณต้องติดตั้ง pv.

ติดตั้ง pv บน Ubuntu ใช้คำสั่งนี้:

sudo apt-get install pv

sudo apt-get install pv ในหน้าต่างเทอร์มินัล

ติดตั้ง pv บน Fedora ให้ใช้คำสั่งนี้:

sudo dnf install pv

sudo dnf ติดตั้ง pv ในหน้าต่างเทอร์มินัล

ติดตั้ง pv ใน Manjaro ใช้คำสั่งนี้:

sudo pacman -Syu pv

sudo pacman -Syu pv ในหน้าต่างเทอร์มินัล

ใช้ pv

pv ย่อมาจาก Pipe Viewer ไปป์ต้องมีส่วนร่วมในคำสั่งบางแห่ง นี่คือตัวอย่างที่เรากำลังวางอิมเมจ ISO ผ่าน zip เพื่อสร้างไฟล์ zip ที่ถูกบีบอัดของ ISO

ในการชะลอคำสั่งให้เพียงพอที่จะจับภาพหน้าจอไฟล์บางไฟล์ในตัวอย่างที่ใช้สำหรับบทความนี้จะถูกเก็บไว้ใน USB ภายนอกแบบเก่าที่ช้าและเรียกว่า SILVERXHD

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip> gparted.zip ในหน้าต่างเทอร์มินัล

ข้อมูล pv ให้เราสามารถเห็นได้ในบรรทัดล่างสุดของจอแสดงผล

เอาต์พุต pv สำหรับการสร้างไฟล์ zip ในหน้าต่างเทอร์มินัล

จากซ้ายไปขวาข้อมูลที่แสดงคือ:

  • ข้อมูลที่โอนมา
  • เวลาผ่านไปนานแล้ว
  • อัตราการถ่ายโอนข้อมูล (ปริมาณงาน)
  • แถบความคืบหน้าและตัวเลขที่เสร็จสมบูรณ์เป็นเปอร์เซ็นต์
  • เวลาที่เหลือโดยประมาณก่อนที่จะเสร็จสิ้น (ETA)

คัดลอกไฟล์ด้วย pv

เพื่อคัดลอกไฟล์ที่มีเอาต์พุตจาก pvใช้คำสั่งนี้:

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | gparted.iso ในหน้าต่างเทอร์มินัล

เราได้รับรายงานความคืบหน้าเมื่อไฟล์ถูกคัดลอก

คัดลอกไฟล์ด้วย pv ในหน้าต่างเทอร์มินัล te

คัดลอกหลายไฟล์ด้วย pv

หากต้องการคัดลอกหลายไฟล์และโฟลเดอร์ด้วย pv เราจำเป็นต้องใช้เคล็ดลับเล็กน้อย เราใช้ tar เพื่อย้ายไฟล์ให้เรา

tar -c help-files/ | pv | tar -x -C Documents/

tar -c help-files / | pv | tar -x -C เอกสาร / ในหน้าต่างเทอร์มินัล

คน tar -c help-files/ ส่วนของคำสั่งสั่ง tar เพื่อสร้าง (-c) ไฟล์เก็บถาวรของไฟล์ในโฟลเดอร์ช่วยเหลือไฟล์ สิ่งนี้ถูกส่งผ่าน pv เพื่อให้เราได้รับความคืบหน้า มันจะถูกส่งกลับเข้าไป tar สำหรับส่วนสุดท้ายของคำสั่ง การแยกเก็บถาวร (-x) และไดเรกทอรีมีการเปลี่ยนแปลง (-C) ไปที่เอกสารก่อนการแตกไฟล์

ดังนั้นไฟล์และโฟลเดอร์ที่อยู่ในไฟล์ช่วยเหลือจะถูกคัดลอกไปยังโฟลเดอร์เอกสารพร้อมกับแสดงความคืบหน้า

การคัดลอกไฟล์ด้วย pv และ tar ในหน้าต่างเทอร์มินัล

เวลานี้แตกต่างกันเล็กน้อย

เราไม่ได้รับ ETA แถบความคืบหน้าในขณะนี้แสดงตัวบ่งชี้การเคลื่อนย้าย มันแสดงให้เห็นว่ากระบวนการนั้นมีการใช้งานอยู่ แต่จะไม่เติบโตจากซ้ายไปขวาเหมือนแถบความคืบหน้าดั้งเดิม pv จำกัด เฉพาะการแสดงข้อมูลที่สามารถแยกได้จากกระบวนการที่กำลังถูกไพพ์

ใช้ pv และ tar เพื่อสร้างที่เก็บถาวร

คัดลอกไฟล์ด้วย pv และ tar ไม่ปล่อยให้เรามีไฟล์เก็บถาวร ประเภทของการจัดเก็บข้อมูล“ เสมือน” ถูกสร้างขึ้นโดย tarซึ่งป้อนกลับเข้าไป tar เพื่อแยกไฟล์ หากวัตถุประสงค์ของเราคือการคัดลอกไฟล์ แต่ถ้าเราต้องการสร้างไฟล์เก็บถาวรล่ะ

เรายังสามารถใช้ tar เพื่อสร้างไฟล์เก็บถาวรและรับรายงานความคืบหน้าจาก pv. ตัวเลือกที่ใช้กับ tar เป็น -c (สร้างที่เก็บถาวร), -z (บีบอัดด้วย gzip) และ -f (ชื่อไฟล์ของที่เก็บถาวร)

โปรดทราบว่าเรากำลังใช้งาน - เป็นชื่อไฟล์ซึ่งเป็นสาเหตุ tar เพื่อใช้ stdout และเขียนเอาต์พุตไปยังหน้าต่างเทอร์มินัล เราไม่เห็นผลลัพธ์นั้นเพราะถูกส่งผ่าน pv.

ชื่อจริงของไฟล์เก็บถาวรจะเป็นชื่อไฟล์ที่เราไพพ์เอาท์พุท pv เข้าไป ในกรณีนี้มันคือ“ help-files.tgz”

tar -czf - ./help-files/ | pv > help-files.tgz

tar -czf - ./help-files/ | pv> help-files.tgz ในหน้าต่างเทอร์มินัล

เราได้รับตัวบ่งชี้ความคืบหน้าเหมือนเดิมและไฟล์เก็บถาวรถูกสร้างขึ้นสำหรับเรา

เอาต์พุตของ tar และ pv ในหน้าต่างเทอร์มินัล

ที่เกี่ยวข้อง: วิธีบีบอัดและแตกไฟล์โดยใช้คำสั่ง tar บน Linux

ตัวเลือกการแสดง pv

มีตัวเลือกมากมายที่คุณสามารถใช้ได้ pv เพื่อเปลี่ยนรายละเอียดของรายงาน

หากคุณใช้ตัวเลือกเหล่านี้ตัวเลือกอื่น ๆ ทั้งหมดจะถูกปิด ดังนั้นหากคุณต้องการใช้งานตัวเลือกการแสดงผลสามตัวคุณต้องระบุสามตัวเลือกเหล่านั้น

การใช้ pv ไม่มีตัวเลือกใด ๆ จะเหมือนกับการใช้ -pterb ตัวเลือก.

  • -p: แสดง ร้อยละ สมบูรณ์ นี่คือแถบความคืบหน้าและตัวเลขที่เสร็จสมบูรณ์เป็นร้อยละ
  • t-: แสดงที่ผ่านไป เวลา.
  • -e: แสดง การทางพิเศษแห่งประเทศไทย.
  • -r: แสดง ประเมินค่า ของการถ่ายโอนข้อมูล
  • -b: แสดง ไบต์ นับ (ข้อมูลถูกโอนไปแล้ว)
  • -n: แสดงเปอร์เซ็นต์เป็น จำนวนเต็ม. นี่จะพิมพ์เปอร์เซ็นต์ที่เสร็จสมบูรณ์เป็นตัวเลขจำนวนเต็มพร้อมกับการอัปเดตใหม่แต่ละรายการในบรรทัดใหม่

ลองทำซ้ำคำสั่งสุดท้ายและส่ง -p ตัวเลือก (เสร็จสมบูรณ์ร้อยละ) ถึง pv.

tar -czf - ./help-files/ | pv - p > help-files.tgz

tar -czf - ./help-files/ | pv - p> help-files.tgz ในหน้าต่างเทอร์มินัล

นี่เป็นการปิดตัวเลือกการแสดงอื่น ๆ ทั้งหมด pv ให้องค์ประกอบเปอร์เซ็นต์เสร็จสมบูรณ์เท่านั้น

เพราะ pv ไม่ได้รับเปอร์เซ็นต์ตามสัดส่วนที่สมบูรณ์ tarแถบความคืบหน้าจะถูกแทนที่ด้วยตัวบ่งชี้การเคลื่อนย้าย ไม่มีตัวเลขเป็นเปอร์เซ็นต์

เอาต์พุตจาก pv และ tar ในหน้าต่างเทอร์มินัล

ใช้ pv ด้วย wc

เราสามารถใช้ pv เพื่อไพพ์ไฟล์ข้อความ (หรือไฟล์) ลงใน wc. wc จะนับการขึ้นบรรทัดใหม่ของตัวละครและคำและ pv จะให้รายงานความคืบหน้าแก่เรา

ที่นี่เรากำลังไพพ์ไฟล์ ". page" ทั้งหมดในไดเร็กทอรี help-files เข้าไป wc.

pv ./help-files/*.page | wc ในหน้าต่างเทอร์มินัล

เมื่อ wc เสร็จสิ้นเราสามารถดูจำนวนการคืนค่าขนส่ง (บรรทัด) อักขระและคำพูดจากไฟล์“. page” ทั้งหมดในโฟลเดอร์ help-files

เอาต์พุตจาก pv และ wc ในหน้าต่างเทอร์มินัล

การติดตั้งคำสั่งความคืบหน้า

คน progress คำสั่งให้ข้อมูลที่เป็นประโยชน์เช่นเดียวกับ pvแต่ทำงานกับคำสั่ง Linux ชุดใดชุดหนึ่งโดยเฉพาะ

ติดตั้ง progress ใน Ubuntu ให้ใช้คำสั่งนี้:

sudo apt-get install progress

sudo apt-get ความคืบหน้าการติดตั้งในหน้าต่างเทอร์มินัล

ติดตั้ง progress ใน Fedora ให้ใช้คำสั่งนี้:

sudo dnf install progress

sudo dnf ความคืบหน้าการติดตั้งใน widow เทอร์มินัล

ติดตั้ง progress ใน Manjaro ใช้คำสั่งนี้:

sudo pacman -Syu progress

sudo pacman -Syu คืบหน้าในหน้าต่างเทอร์มินัล

ความคืบหน้าของคำสั่งใช้งานได้กับ

การพิมพ์ progress ในหน้าต่างเทอร์มินัลแล้วกด Enter จะให้รายการคำสั่งที่คุณต้องการ progress ทำงานร่วมกับ

progress

การส่งออกของความคืบหน้าในคำสั่งในหน้าต่าง terminal

ใช้ความก้าวหน้ากับท่อ

มีสองเทคนิคที่เราสามารถใช้เพื่อตรวจสอบคำสั่งด้วย progress. อย่างแรกคือการใช้ท่อ

คน tar คำสั่งอยู่ในรายการคำสั่งที่รองรับที่ progress สามารถตรวจสอบเพื่อใช้งานได้ tar.

ตัวเลือกที่เราจะใช้เป็นมาตรฐาน -c (สร้างที่เก็บถาวร), -z (บีบอัดด้วย gzip) และ -f ตัวเลือก (ชื่อไฟล์) เราจะสร้างไฟล์เก็บถาวรที่บีบอัดของทุกสิ่งในโฟลเดอร์ช่วยเหลือไฟล์และไฟล์เก็บถาวรจะมีชื่อว่า“ help.tgz”

เรากำลังส่งไปที่ progress และการใช้ -m ตัวเลือกจอภาพ () progress รายงานต่อไปเรื่อย ๆ จนกว่าจะเสร็จสิ้น

tar -czf help.tgz ./help-files/ | progress -m

tar -czf help.tgz ./help-files/ | คืบหน้า -m ในหน้าต่างเทอร์มินัล

หน้าต่างเทอร์มินัลจะแสดงความคืบหน้าของ tar คำสั่งในขณะที่มันสร้างการเก็บถาวร

การตรวจสอบความคืบหน้าคำสั่ง tar ในหน้าต่างเทอร์มินัล

เมื่อประมวลผลไฟล์แต่ละไฟล์แล้วจะแสดงรายการพร้อมข้อมูลต่อไปนี้:

  • ID กระบวนการ
  • ชื่อกระบวนการ
  • เปอร์เซ็นต์เสร็จสมบูรณ์
  • ประมวลผลข้อมูลและขนาดทั้งหมดของไฟล์
  • อัตราการส่งข้อมูล (ปริมาณงาน)
  • เวลาที่เหลือโดยประมาณ (ETA)

คุณอาจประหลาดใจที่เห็นชุดข้อมูลที่สองปรากฏขึ้น ชุดข้อมูลแรกนี้มีไว้สำหรับ tar. อย่างที่สองคือสำหรับ gzip. tar โทร gzip เพื่อทำการบีบอัด เพราะ gzip อยู่ในรายการคำสั่งที่รองรับ progress รายงานเกี่ยวกับมัน

การใช้ความก้าวหน้าในโหมดการตรวจสอบอย่างต่อเนื่อง

คุณสามารถใช้ได้ progress ในโหมดมอนิเตอร์ต่อเนื่องแบบเรียลไทม์โดยใช้ตัวเลือก -M (มอนิเตอร์)

พิมพ์คำสั่งต่อไปนี้ในหน้าต่างเทอร์มินัล:

progress -M

คืบหน้า -M ในหน้าต่างเทอร์มินัล

progress จะรายงานว่าไม่มีคำสั่งให้เรียกใช้เพื่อตรวจสอบ แต่คุณจะไม่กลับไปที่บรรทัดคำสั่ง progress รอจนกระทั่งคำสั่งที่สามารถมอนิเตอร์เริ่มทำงานได้ จากนั้นจะเริ่มการรายงานโดยอัตโนมัติ

ความคืบหน้ารอให้คำสั่งเริ่มต้นในหน้าต่างเทอร์มินัล

ในหน้าต่างเทอร์มินัลอื่นพิมพ์คำสั่งที่อยู่ในรายการคำสั่งที่ความคืบหน้าสามารถตรวจสอบได้

พวกเราจะใช้ cat. คำสั่งที่เร็วเกินไปจะไม่ลงทะเบียน progressดังนั้นเราจะแสดงรายการเนื้อหาของไฟล์ข้อความที่ยาวมาก

cat words.page

คำแมวหน้าในหน้าต่างเทอร์มินัล

ในหน้าต่างเทอร์มินัลด้วย progress ในนั้นคุณจะเห็นสถิติของ cat คำสั่งในขณะที่มันดำเนินการและทำงานไปสู่ความสำเร็จ

รายงานความคืบหน้าเกี่ยวกับ cat ในหน้าต่างเทอร์มินัล

เมื่อ cat เสร็จสิ้นการแสดงรายการไฟล์ progress กลับสู่สถานะรอ

แต่ละครั้งที่หนึ่งในคำสั่งที่สามารถรายงานดำเนินการขนาดใหญ่ progress จะตรวจสอบโดยอัตโนมัติและรายงาน

มันค่อนข้างเรียบร้อย

เสร็จสมบูรณ์ 100%

ถอดการคาดเดาออกจากการสงสัยว่าคำสั่งที่ใช้เวลานานกำลังทำอะไรอยู่และหยุดพักจากการไตร่ตรองเคอร์เซอร์ของคุณด้วย pv และ progress .