Khi sao lưu và sao chép/di chuyển các tệp lớn trên hệ thống Linux của bạn, bạn có thể muốn theo dõi tiến trình của một hoạt động đang diễn ra. Nhiều công cụ dòng lệnh không có chức năng cho phép bạn xem thông tin tiến trình khi một lệnh đang chạy trong một pipe. Trong bài viết này, chúng ta sẽ xem xét một lệnh Linux/Unix quan trọng được gọi là pv command - Ứng dụng xem dữ liệu thông qua pipe.
Pv là một công cụ dòng lệnh cho phép bạn theo dõi tiến trình của dữ liệu đang được truyền qua một pipe. Khi sử dụng lệnh pv, nó cung cấp cho bạn một hiển thị trực quan của các thông tin sau:
- Thời gian đã trôi qua.
- Tỷ lệ đã hoàn thành bao gồm thanh tiến trình.
- Hiển thị tỷ lệ tốc độ hiện tại.
- Tổng dữ liệu đã truyền.
- và ETA (Thời gian ước tính).
Cách cài đặt lệnh pv trên Linux?
Lệnh pv không được cài đặt sẵn trên hầu hết các bản phân phối Linux, do đó bạn có thể cài đặt nó bằng cách làm theo các bước sau.
Cài đặt pv trên hệ thống Linux dựa trên RHEL
Trước tiên, bạn cần bật kho lưu trữ EPEL và sau đó chạy lệnh yum hoặc dnf sau để cài đặt nó.
# yum install pv
OR
# dnf install pv
Cài đặt pv trên hệ thống Linux dựa trên Debian
$ sudo apt-get install pv
Cài đặt pv trên các bản phân phối Linux khác
$ sudo emerge -a pv [On Gentoo Linux]
$ sudo apk add pv [On Alpine Linux]
$ sudo pacman -S pv [On Arch Linux]
$ sudo zypper install pv [On OpenSUSE]
Tôi sử dụng lệnh pv như thế nào trên Linux?
pv thường được sử dụng với các chương trình khác thiếu khả năng theo dõi tiến trình của một hoạt động đang diễn ra. Bạn có thể sử dụng nó bằng cách đặt nó trong một pipeline giữa hai quy trình, với các tùy chọn phù hợp có sẵn.
Đầu vào tiêu chuẩn của pv sẽ được chuyển qua đầu ra tiêu chuẩn của nó và tiến trình (đầu ra) sẽ được in trên lỗi tiêu chuẩn. Nó có cùng hành vi với lệnh cat trong Linux.
Cú pháp của lệnh pv như sau:
$ pv file
$ pv options file
$ pv file > filename.out
$ pv options | command > filename.out
$ comand1 | pv | command2
Các tùy chọn được sử dụng với pv được chia thành ba loại, công cụ hiển thị, bộ biến đổi đầu ra và tùy chọn chung.
Tùy chọn sửa đổi hiển thị của Pv
Một số tùy chọn nằm trong phần sửa đổi hiển thị.
- Để bật thanh tiến trình hiển thị, sử dụng tùy chọn
-p
.
- Để xem thời gian đã trôi qua, sử dụng tùy chọn
--timer
.
- Để bật bộ đếm ETA thử đoán thời gian còn lại trước khi hoàn thành một hoạt động, sử dụng tùy chọn
--eta
. Sự đoán dựa trên tốc độ truyền trước đó và kích thước dữ liệu tổng cộng.
- Để bật một bộ đếm tốc độ, sử dụng tùy chọn
--rate
.
- Để hiển thị tổng số dữ liệu đã truyền cho đến nay, sử dụng tùy chọn
--bytes
.
- Để hiển thị thông tin tiến trình của phần trăm nguyên thay vì biểu thị hình ảnh, sử dụng tùy chọn
-n
. Điều này có thể tốt khi sử dụng pv với lệnh dialog để hiển thị tiến trình trong một hộp dialog.
Tùy chọn sửa đổi hiển thị của Pv
Một số tùy chọn nằm trong phần bộ biến đổi đầu ra.
- Để chờ cho đến khi byte đầu tiên được truyền trước khi hiển thị thông tin tiến trình, sử dụng tùy chọn
--wait
.
- Để giả định tổng lượng dữ liệu cần chuyển là SIZE byte khi tính phần trăm và ETA, sử dụng tùy chọn
--size SIZE
.
- Để chỉ định số giây giữa các cập nhật, sử dụng tùy chọn
--interval SECONDS
.
- Sử dụng tùy chọn
--force
để bắt buộc một hoạt động. Tùy chọn này buộc pv hiển thị hình ảnh khi lỗi tiêu chuẩn không phải là một terminal.
- Các tùy chọn chung là
--help
để hiển thị thông tin sử dụng và --version
để hiển thị thông tin phiên bản.
Pv command với các ví dụ trên Linux
1. Khi không bao gồm tùy chọn nào, các lệnh pv chạy với các tùy chọn mặc định -p
, -t
, -e
, -r
và -b
.
Ví dụ, để sao chép tệp opensuse.vdi vào /tmp/opensuse.vdi, hãy chạy lệnh này và theo dõi thanh tiến trình trong video.
# pv opensuse.vdi > /tmp/opensuse.vdi
2. Để tạo một tệp zip từ tệp /var/log/syslog của bạn, hãy chạy lệnh sau.
# pv /var/log/syslog | zip > syslog.zip
3. Để đếm số dòng, số từ và số byte trong tệp /etc/hosts trong khi chỉ hiển thị thanh tiến trình, hãy chạy lệnh dưới đây.
# pv -p /etc/hosts | wc
4. Theo dõi tiến trình tạo tệp sao lưu bằng tiện ích tar.
# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)

5. Trong ví dụ này, chúng ta sử dụng lệnh dd để ghi tệp ISO vào đĩa flash USB:
# dd if=debian-10.11.0-amd64-DVD-1.iso | pv | dd of=/dev/sda bs=4M
6. Sử dụng công cụ dòng lệnh pv và dialog cùng nhau để tạo thanh tiến trình hộp dialog như sau.
# tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
Đây là một công cụ dòng lệnh tốt mà bạn có thể sử dụng với các công cụ không có khả năng theo dõi tiến trình của các hoạt động như sao chép/ di chuyển/ sao lưu tệp, để biết thêm tùy chọn, hãy kiểm tra man pv.