Làm thế nào để giám sát tiến độ của một hoạt động dòng lệnh Linux bằng cách sử dụng lệnh PV
Nếu bạn là một quản trị hệ thống Linux, không có nghi ngờ rằng bạn phải dành phần lớn thời gian làm việc của bạn trên dòng lệnh - cài đặt và gỡ bỏ các gói; số liệu thống kê hệ thống giám sát; sao chép, di chuyển, xóa nội dung; gỡ lỗi; và hơn thế nữa. Có khi bạn kích hoạt một lệnh và phải mất một lúc trước khi thao tác hoàn tất. Tuy nhiên, cũng có những lúc lệnh bạn thực hiện chỉ bị treo, để lại cho bạn đoán xem điều gì thực sự xảy ra đằng sau hậu trường.
Thông thường, các lệnh Linux không cung cấp thông tin liên quan đến tiến trình của hoạt động đang diễn ra, một điều rất quan trọng đặc biệt là khi bạn có thời gian giới hạn. Tuy nhiên, điều đó không có nghĩa là bạn đang bất lực - tồn tại một lệnh, được gọi là pv
, hiển thị thông tin tiến trình hữu ích liên quan đến hoạt động dòng lệnh đang diễn ra. Trong bài viết này, chúng tôi sẽ thảo luận về lệnh này cũng như các tính năng của nó thông qua một số ví dụ dễ hiểu.
Lệnh PV
Được phát triển bởi Andrew Wood, PV - viết tắt của Pipe Viewer - hiển thị thông tin liên quan đến tiến độ của dữ liệu thông qua một đường ống. Thông tin bao gồm thời gian trôi qua, tỷ lệ phần trăm hoàn thành (với thanh tiến trình), tỷ lệ thông lượng hiện tại, tổng số dữ liệu được chuyển và ETA.
“Để sử dụng nó, chèn nó vào một đường ống dẫn giữa hai tiến trình, với các tùy chọn thích hợp. Đầu vào tiêu chuẩn của nó sẽ được chuyển qua đầu ra tiêu chuẩn và tiến trình sẽ được hiển thị trên lỗi tiêu chuẩn, ”
Phần trên giải thích trang hướng dẫn của lệnh.
Tải xuống và cài đặt
Người dùng các hệ thống dựa trên Debian như Ubuntu có thể dễ dàng cài đặt tiện ích bằng cách chạy lệnh sau trong terminal:
sudo apt-get cài đặt pv
Nếu bạn đang sử dụng bất kỳ bản phân phối Linux nào khác, bạn có thể cài đặt lệnh bằng trình quản lý gói được cài đặt trên hệ thống của bạn. Sau khi cài đặt thành công, bạn có thể sử dụng tiện ích dòng lệnh trong các kịch bản khác nhau (xem phần sau). Điều đáng nói đến là phiên bản 1.2.0 pv đã được sử dụng trong tất cả các ví dụ được đề cập trong bài viết này.
Tính năng và cách sử dụng
Một kịch bản rất phổ biến mà có lẽ hầu hết chúng ta (những người làm việc trên dòng lệnh trong Linux) sẽ liên quan đến việc sao chép một tập tin phim từ một ổ đĩa USB vào máy tính của bạn. Nếu bạn cố gắng hoàn thành thao tác nói trên bằng cách sử dụng lệnh cp
, bạn sẽ phải đợi một cách mù quáng cho đến khi quá trình sao chép hoàn tất hoặc một số lỗi được đưa ra.
Tuy nhiên, lệnh pv
có thể hữu ích trong trường hợp này. Đây là một ví dụ:
pv /media/himanshu/1AC2-A8E3/fNf.mkv> ./Desktop/fnf.mkv
Và đây là đầu ra:
Vì vậy, như bạn có thể thấy ở trên, lệnh hiển thị rất nhiều thông tin hữu ích liên quan đến hoạt động liên tục, bao gồm lượng dữ liệu đã được chuyển, thời gian trôi qua, tốc độ truyền, thanh tiến trình, tiến độ theo phần trăm và số lượng thời gian còn lại.
Lệnh pv
cung cấp các công tắc hiển thị khác nhau. Ví dụ, bạn có thể sử dụng -p
để hiển thị phần trăm, -t
cho bộ đếm thời gian, -r
cho tốc độ truyền, -e
cho eta và -b
cho bộ đếm byte. Điều tốt là bạn sẽ không phải nhớ bất kỳ cái nào trong số chúng, vì tất cả chúng đều được kích hoạt theo mặc định. Tuy nhiên, nếu bạn chỉ yêu cầu thông tin liên quan đến chỉ một công tắc hiển thị cụ thể trong đầu ra, bạn có thể chuyển công tắc đó trong lệnh pv
.
Ngoài ra còn có một chuyển đổi hiển thị -n
cho phép lệnh hiển thị một tỷ lệ phần trăm nguyên, một cho mỗi dòng trên lỗi tiêu chuẩn, thay vì chỉ báo tiến trình thị giác thông thường. Sau đây là ví dụ về chuyển đổi này đang hoạt động:
pv -n /media/himanshu/1AC2-A8E3/fNf.mkv> ./Desktop/fnf.mkv
Công cụ chuyển đổi hiển thị cụ thể này phù hợp trong các tình huống mà bạn muốn đưa đầu ra vào trong lệnh thoại.
Tiếp tục, cũng có một tùy chọn dòng lệnh, -L
, cho phép bạn sửa đổi tốc độ truyền dữ liệu của lệnh pv. Ví dụ, tôi đã sử dụng -L
để giới hạn tốc độ truyền dữ liệu đến 2MB / s.
pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv> ./Desktop/fnf.mkv
Như có thể thấy trong ảnh chụp màn hình ở trên, tốc độ truyền dữ liệu bị giới hạn theo hướng của tôi.
Một tình huống khác mà pv
có thể giúp là trong khi nén các tập tin. Dưới đây là ví dụ về cách bạn có thể sử dụng lệnh này trong khi nén tệp bằng Gzip:
pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip> ./Desktop/fnf.log.gz
Phần kết luận
Như bạn đã quan sát, pv
là một tiện ích nhỏ hữu ích có thể giúp bạn tiết kiệm thời gian quý báu của bạn trong trường hợp một hoạt động dòng lệnh không hoạt động như mong đợi. Ngoài ra, thông tin mà nó hiển thị cũng có thể được sử dụng trong các kịch bản lệnh shell. Tôi rất muốn giới thiệu lệnh này; nó đáng để thử.