วิธีตรวจสอบความคืบหน้าของคำสั่ง Linux (ด้วย pv และความคืบหน้า)
เผยแพร่แล้ว: 2022-01-29 แทนที่จะใช้ Flying blind ให้ใช้คำสั่ง Linux pv
และ progress
เพื่อติดตามความคืบหน้าของคำสั่ง ยูทิลิตีเหล่านี้จะให้แถบความคืบหน้าสำหรับคำสั่งที่ปกติไม่มี คุณจะเห็นเวลาโดยประมาณจนกว่าจะเสร็จสิ้นด้วย
หากคุณอยู่ในเที่ยวบินระยะไกลบนเครื่องบินที่ไม่มีหน้าจอวิดีโอที่พนักพิง มันไม่ง่ายเลยที่จะรู้ว่าการเดินทางของคุณไปได้ไกลแค่ไหน คุณรู้เมื่อคุณออกเดินทาง คุณรู้ว่าเที่ยวบินนี้จะใช้เวลานานแค่ไหน แต่คุณจะทราบได้อย่างไรว่าคุณมาถูกทาง ตรงเวลา หรือช้ากว่ากำหนด หากคุณไม่ต้องการชมภาพยนตร์บนเครื่องบิน คุณสามารถเปลี่ยนหน้าจอวิดีโอเพื่อแสดงแผนที่พร้อมตำแหน่งเครื่องบินของคุณได้ คุณยังได้รับสถิติบางอย่าง เช่น เวลาที่คาดว่าจะมาถึง (ETA) ซึ่งดีมาก
การเริ่มคำสั่งจากหน้าต่างเทอร์มินัลบางครั้งอาจรู้สึกเหมือนเป็นเที่ยวบินระยะไกลโดยไม่มีหน้าจอวิดีโอ คุณไม่มีอะไรจะบ่งบอกได้เลยว่าทุกอย่างเรียบร้อยดีหรือกระบวนการหยุดทำงาน หรือใกล้จะเสร็จสมบูรณ์แค่ไหน เคอร์เซอร์กะพริบไม่ได้ให้ข้อมูลมากนัก
คำสั่ง pv
และ progress
จะให้สถิติและผลตอบรับเล็กน้อย คุณสามารถดูได้ว่ากระบวนการนี้ใกล้จะเสร็จสมบูรณ์เพียงใด นั่นหมายความว่าคุณจะได้รับ ETA สำหรับกระบวนการที่ทำงานอยู่ เมื่อเทียบกับการจ้องที่เคอร์เซอร์ ที่ชนะมือลง
กำลังติดตั้ง pv
คุณต้องติดตั้ง pv
ในการติดตั้ง pv
บน Ubuntu ให้ใช้คำสั่งนี้:
sudo apt-get ติดตั้ง pv
ในการติดตั้ง pv
บน Fedora ให้ใช้คำสั่งนี้:
sudo dnf ติดตั้ง pv
ในการติดตั้ง pv
บน Manjaro ให้ใช้คำสั่งนี้:
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 | pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso zip > gparted.zip
ข้อมูล pv
ให้เราเห็นได้ในบรรทัดล่างสุดของหน้าจอ
จากซ้ายไปขวา ข้อมูลที่แสดงคือ:
- ข้อมูลที่ถ่ายโอนไปแล้ว
- เวลาผ่านไปแสนไกล
- อัตราการถ่ายโอนข้อมูล (ทรูพุต)
- แถบความคืบหน้าและเปอร์เซ็นต์ที่เสร็จสมบูรณ์
- เวลาที่เหลือโดยประมาณก่อนเสร็จสิ้น (ETA)
การคัดลอกไฟล์ด้วย pv
ในการคัดลอกไฟล์ที่มีเอาต์พุตจาก pv
ให้ใช้คำสั่งนี้:
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso
เราได้รับรายงานความคืบหน้าเมื่อมีการคัดลอกไฟล์
การคัดลอกไฟล์หลายไฟล์ด้วย pv
ในการคัดลอกไฟล์และโฟลเดอร์หลายไฟล์ด้วย pv
เราต้องใช้เคล็ดลับเล็กน้อย เราใช้ tar
เพื่อย้ายไฟล์ให้เรา
tar -c help-files/ | pv | tar -x -C เอกสาร/
ส่วน tar -c help-files/
ของคำสั่งสั่งให้ tar
สร้าง ( -c
) ไฟล์เก็บถาวรของไฟล์ในโฟลเดอร์ help-files นี้ถูกส่งผ่าน pv
เพื่อให้เราได้รับการแสดงความคืบหน้า จากนั้นจะถูกส่งกลับไปยัง tar
สำหรับส่วนสุดท้ายของคำสั่ง ไฟล์เก็บถาวรถูกแตก ( -x
) และไดเร็กทอรีถูกเปลี่ยน ( -C
) เป็น Documents ก่อนการแตกไฟล์
ดังนั้น ไฟล์และโฟลเดอร์ที่อยู่ในไฟล์วิธีใช้จะถูกคัดลอกไปยังโฟลเดอร์เอกสาร โดยมีการแสดงความคืบหน้า
ผลลัพธ์จะแตกต่างกันเล็กน้อยในครั้งนี้
เราไม่ได้รับ 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 บน Linux
ตัวเลือกการแสดง pv
มีตัวเลือกมากมายที่คุณสามารถใช้กับ pv
เพื่อเปลี่ยนรายละเอียดของรายงานได้
หากคุณใช้ตัวเลือกเหล่านี้ ตัวเลือกอื่นๆ ทั้งหมดจะถูกปิด ดังนั้น หากคุณต้องการใช้ตัวเลือกการแสดงผลสามแบบ คุณต้องระบุสามตัวเลือกนั้น
การใช้ pv
โดยไม่มีตัวเลือกจะเหมือนกับการใช้ตัวเลือก -pterb
- -p : แสดง เปอร์เซ็นต์ ที่สมบูรณ์ นี่คือแถบความคืบหน้าและเปอร์เซ็นต์ที่เสร็จสมบูรณ์
- -t : แสดง เวลา ที่ผ่านไป
- -e : แสดง ETA
- -r : แสดง อัตรา การถ่ายโอนข้อมูล
- -b : แสดงจำนวน ไบต์ (ข้อมูลที่ถ่ายโอนไปแล้ว)
- -n : แสดงเปอร์เซ็นต์เป็น จำนวนเต็ม ซึ่งจะพิมพ์เปอร์เซ็นต์ที่เสร็จสมบูรณ์เป็นตัวเลขจำนวนเต็ม โดยมีการอัปเดตใหม่แต่ละรายการในบรรทัดใหม่
ทำซ้ำคำสั่งสุดท้ายและส่งตัวเลือก -p
(เปอร์เซ็นต์ที่เสร็จสมบูรณ์) ไปที่ pv
tar -czf - ./help-files/ | pv - p > help-files.tgz
การดำเนินการนี้จะปิดตัวเลือกการแสดงผลอื่นๆ ทั้งหมด pv
ระบุเปอร์เซ็นต์ที่เสร็จสมบูรณ์เท่านั้น
เนื่องจาก pv
ไม่ได้รับเปอร์เซ็นต์ที่เสร็จสมบูรณ์จาก tar
แถบความคืบหน้าจึงถูกแทนที่ด้วยตัวบ่งชี้ที่เคลื่อนที่ ไม่มีตัวเลขเป็นเปอร์เซ็นต์
ใช้ pv กับ wc
เราสามารถใช้ pv
เพื่อไพพ์ไฟล์ข้อความ (หรือไฟล์) ลงใน wc
wc
จะนับการขึ้นบรรทัดใหม่ อักขระ และคำ และ pv
จะให้รายงานความคืบหน้าแก่เรา
ที่นี่เรากำลังไพพ์ไฟล์ ".page" ทั้งหมดในไดเร็กทอรี help-files ลงใน wc
เมื่อ wc
เสร็จสิ้น เราจะเห็นจำนวนการขึ้นบรรทัดใหม่ (บรรทัด) อักขระและคำจากไฟล์ ".page" ทั้งหมดในโฟลเดอร์ help-files
การติดตั้งคำสั่งความคืบหน้า
คำสั่ง progress
ให้ข้อมูลที่เป็นประโยชน์ประเภทเดียวกับ pv
แต่ใช้งานได้กับชุดคำสั่ง Linux เฉพาะ
ในการติดตั้ง progress
ใน Ubuntu ให้ใช้คำสั่งนี้:
sudo apt-get ความคืบหน้าในการติดตั้ง
ในการติดตั้ง progress
ใน Fedora ให้ใช้คำสั่งนี้:
sudo dnf ความคืบหน้าในการติดตั้ง
ในการติดตั้ง progress
ใน Manjaro ให้ใช้คำสั่งนี้:
sudo pacman -Syu ก้าวหน้า
ความคืบหน้าของคำสั่งใช้งานได้กับ
การพิมพ์ progress
ในหน้าต่างเทอร์มินัล progress
กด Enter จะแสดงรายการคำสั่งที่ใช้งานได้
ความคืบหน้า
ใช้ความคืบหน้ากับท่อ
มีสองเทคนิคที่เราสามารถใช้เพื่อตรวจสอบคำสั่งที่มี progress
อย่างแรกเลยคือการใช้ท่อ
คำสั่ง tar
อยู่ในรายการคำสั่งที่รองรับซึ่ง progress
สามารถตรวจสอบได้ ลองใช้ tar
กัน
ตัวเลือกที่เราจะใช้คือตัวเลือกมาตรฐาน -c
(สร้างไฟล์เก็บถาวร), -z
(บีบอัดด้วย gzip) และ -f
(ชื่อไฟล์) เราจะสร้างไฟล์บีบอัดของทุกอย่างในโฟลเดอร์ help-files และไฟล์เก็บถาวรจะมีชื่อว่า “help.tgz”
เรากำลังนำสิ่งนั้นไปสู่ progress
และใช้ตัวเลือก -m
(จอภาพ) ดังนั้น progress
จะรายงานกระบวนการต่อไปจนกว่าจะเสร็จสิ้น
tar -czf help.tgz ./help-files/ | ความคืบหน้า -m
หน้าต่างเทอร์มินัลจะแสดงความคืบหน้าของคำสั่ง tar
เมื่อสร้างไฟล์เก็บถาวร
เนื่องจากแต่ละไฟล์ได้รับการประมวลผล จะมีการแสดงรายการพร้อมข้อมูลต่อไปนี้:
- รหัสกระบวนการ
- ชื่อกระบวนการ
- เปอร์เซ็นต์ที่เสร็จสมบูรณ์
- ข้อมูลที่ประมวลผลและขนาดรวมของไฟล์
- อัตราข้อมูล (ปริมาณงาน)
- เวลาที่เหลือโดยประมาณ (ETA)
คุณอาจแปลกใจที่เห็นชุดข้อมูลที่สองปรากฏขึ้น ชุดข้อมูลแรกนี้มีไว้สำหรับ tar
อันที่สองสำหรับ gzip
tar
เรียก gzip
เพื่อทำการบีบอัด เนื่องจาก gzip
อยู่ในรายการคำสั่งที่รองรับ จึงรายงาน progress
การใช้ความคืบหน้าในโหมดการตรวจสอบอย่างต่อเนื่อง
คุณสามารถใช้ progress
ในโหมดการตรวจสอบต่อเนื่องแบบเรียลไทม์โดยใช้ตัวเลือก -M (จอภาพ)
พิมพ์คำสั่งต่อไปนี้ในหน้าต่างเทอร์มินัล:
ความคืบหน้า -M
progress
จะรายงานว่าไม่มีคำสั่งให้ตรวจสอบ แต่คุณจะไม่กลับไปที่บรรทัดคำสั่ง progress
จะรอจนกว่าคำสั่งที่สามารถตรวจสอบได้เริ่มทำงาน จากนั้นจะเริ่มรายงานโดยอัตโนมัติ
ในหน้าต่างเทอร์มินัลอื่น พิมพ์คำสั่งที่อยู่ในรายการคำสั่งที่ความคืบหน้าสามารถตรวจสอบได้
เราจะใช้ cat
คำสั่งที่หมดเร็วเกินไปจะไม่ลงทะเบียนกับ progress
ดังนั้นเราจะแสดงรายการเนื้อหาของไฟล์ข้อความที่ยาวมาก
คำแมว.หน้า
ในหน้าต่างเทอร์มินัลที่มี progress
คุณจะเห็นสถิติสำหรับคำสั่ง cat
ขณะดำเนินการและทำงานจนเสร็จสิ้น
เมื่อ cat
เสร็จสิ้นรายการ progress
ของไฟล์จะกลับสู่สถานะรอ
แต่ละครั้งที่คำสั่งใดคำสั่งหนึ่งที่สามารถรายงานได้ทำงานขนาดใหญ่ progress
จะตรวจสอบและรายงานโดยอัตโนมัติ
ที่ค่อนข้างเรียบร้อย
เสร็จสมบูรณ์ 100%
เลิกสงสัยว่าคำสั่งที่ใช้เวลานานทำงานอย่างไร และพักสมองจากการพิจารณาเคอร์เซอร์ของคุณด้วย pv
และ progress
คำสั่งลินุกซ์ | ||
ไฟล์ | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · เข้าร่วม · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · ดู · strings · พิมพ์ · เปลี่ยนชื่อ · zip · unzip · เมานต์ · umount · ติดตั้ง · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · แพทช์ · แปลง · rclone · ฉีก · srm | |
กระบวนการ | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · หมดเวลา · ผนัง · ใช่ · ฆ่า · หลับ · sudo · su · เวลา · groupadd · usermod · กลุ่ม · lshw · ปิดระบบ · รีบูต · หยุด · poweroff · passwd · lscpu · crontab · วันที่ · bg · fg | |
ระบบเครือข่าย | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ