Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn cách dùng progress Linux để giám sát cp, mv, dd, tar chính xác

    Nguyễn Hưng

    Ngày đăng:

    02/04/2026

    Cập nhật lần cuối:

    02/04/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    02/04/2026

    Cập nhật lần cuối:

    02/04/2026

    Mục lục

    Lệnh progress là một tiện ích dòng lệnh trên Linux dùng để hiển thị phần trăm, tốc độ và thời gian ước tính khi các lệnh như cp, mv, dd, tar, gzip,… đang xử lý dữ liệu. Trong bài viết này, mình sẽ hướng dẫn bạn cách dùng progress Linux để giám sát các lệnh cp, mv, dd, tar,… trong thời gian thực nhanh chóng, chính xác.

    Những điểm chính

    • Quan điểm của mình: Lệnh progress không chỉ là một tiện ích hiển thị tiến trình đơn thuần, mà là một trợ thủ đắc lực giúp các quản trị viên hệ thống chủ động kiểm soát tài nguyên, hạn chế tối đa rủi ro gián đoạn dịch vụ hoặc hỏng hóc dữ liệu khi thao tác với file lớn.
    • Định nghĩa lệnh progress Linux: Hiểu rõ progress là công cụ dòng lệnh dùng để hiển thị phần trăm hoàn thành, tốc độ và thời gian ước tính cho các lệnh xử lý dữ liệu lớn.
    • Các trường hợp nên sử dụng: Nắm được các tình huống thực tế cần dùng progress như sao chép file lớn, nén/giải nén hoặc giám sát lệnh dd.
    • Cách cài đặt: Biết cách cài đặt progress nhanh chóng trên các bản phân phối Linux phổ biến và cả phương pháp cài đặt từ mã nguồn.
    • Bảng tùy chọn phổ biến: Có được một bảng tra cứu nhanh các tùy chọn quan trọng, giúp bạn tùy chỉnh việc giám sát theo nhu-cầu.
    • Hướng dẫn sử dụng: Thành thạo các lệnh cơ bản để hiển thị tiến trình, xem tốc độ và thời gian ước tính.
    • Cách theo dõi tiến trình cụ thể: Nắm vững các phương pháp để giám sát các lệnh cụ thể như cp, mv, tar và cách theo dõi từ một cửa sổ terminal khác.
    • Lưu ý khi sử dụng: Nắm được các lưu ý quan trọng để sử dụng progress một cách an toàn và hiệu quả, từ vấn đề quyền hạn đến độ chính xác của các chỉ số.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề thực tế như tại sao không thấy tiến trình, khi nào nên dùng các tùy chọn -c/-a và cách tích hợp progress vào hệ thống giám sát.

    Lệnh progress Linux là gì?

    progress Linux (trước đây là cv – Coreutils Viewer) là công cụ dòng lệnh nhẹ, mã nguồn mở, có chức năng quét và hiển thị phần trăm hoàn thành khi hệ thống đang chạy các lệnh xử lý dữ liệu lâu như cp, mv, dd, tar, gzip, cat, grep. Công cụ này giúp bạn theo dõi trực quan quá trình thực thi, cho biết đã xử lý bao nhiêu dữ liệu, tốc độ hiện tại, thời gian đã trôi qua và thời gian ước tính để hoàn thành.

    progress là lệnh được sử dụng để hiển thị phần trăm hoàn thành khi chạy các lệnh xử lý dữ liệu
    progress là lệnh được sử dụng để hiển thị phần trăm hoàn thành khi chạy các lệnh xử lý dữ liệu

    Về cơ chế hoạt động, progress sẽ liên tục quét thư mục /proc để tìm kiếm các lệnh đang được thực thi. Sau đó, lệnh sẽ tìm kiếm trong các thư mục fd và fdinfo để xác định các file đang được mở và vị trí của con trỏ đọc/ghi. Nhờ cơ chế này, công cụ hiển thị dữ liệu chính xác và tiêu tốn rất ít tài nguyên. Công cụ này cũng hỗ trợ chế độ giám sát liên tục tương tự như lệnh top quen thuộc trên Linux.

    Các trường hợp nên sử dụng lệnh progress

    Công cụ progress đặc biệt hữu ích trong các tình huống quản trị hệ thống hàng ngày:

    • Sao chép hoặc di chuyển dữ liệu lớn: Mặc định, lệnh cp hay mv khi xử lý file sẽ chỉ nhấp nháy con trỏ chuột, do đó việc sử dụng progress sẽ giúp bạn biết chính xác đã tiến trình đã sao chép được bao nhiêu %, tốc độ bao nhiêu MB/s và còn bao lâu nữa thì xong.
    • Thao tác với ổ đĩa bằng lệnh dd: Lệnh progress sẽ hữu ích khi bạn thao tác với ổ đĩa bằng lệnh dd, giúp giám sát xem việc ghi đĩa có đang diễn ra bình thường không, từ đó hạn chế việc rút USB ra sớm làm hỏng dữ liệu.
    • Nén hoặc giải nén file: Các tác vụ backup hoặc giải nén mã nguồn lớn thường tốn nhiều thời gian, khi đó lệnh progress giúp bạn giám sát quá trình này mà không cần phải dùng các lệnh phức tạp như pv.
    • Khi quên bật chế độ hiển thị chi tiết: Nếu bạn gõ cp file_khung /dich mà quên không thêm tham số -v để xem, bạn không cần hủy lệnh đi làm lại. Khi đó bạn chỉ cần mở một terminal khác và gõ progress để xem ngay lập tức.
    Các trường hợp nên sử dụng lệnh progress
    Các trường hợp nên sử dụng lệnh progress

    Cách cài đặt progress trên Linux

    Dưới đây là cách cài đặt progress chi tiết cho từng hệ điều hành:

    Trên Debian/Ubuntu/Mint:

    Người dùng cần cài đặt thư viện libncurses5-dev trước khi cài progress

    sudo apt install libncurses5-dev
    sudo apt install progress

    Trên RHEL/CentOS/Fedora/Rocky/AlmaLinux:

    sudo yum install ncurses-devel
    sudo yum install progress

    Mẹo từ chuyên gia: Đối với các phiên bản AlmaLinux/Rocky Linux 8 hoặc 9 mới nhất, bạn nên sử dụng trình quản lý gói dnf thay cho yum (sudo dnf install progress) để tốc độ tải và giải quyết dependencies diễn ra nhanh hơn.

    Trên Arch Linux:

    sudo pacman -S ncurses-devel
    sudo pacman -S progress

    Cài đặt từ mã nguồn cho các distro khác:

    Nếu hệ điều hành của bạn không có sẵn gói cài đặt, bạn có thể tự biên dịch từ mã nguồn gốc trên GitHub. Bạn cần đảm bảo hệ thống đã cài đặt thư viện ncurses (ví dụ: ncurses-devel hoặc libncursesw6).

    git clone https://github.com/Xfennec/progress.git
    cd progress
    make
    sudo make install

    Kết quả hiện thị sau khi chạy lệnh cài đặt như sau:

    Kết quả hiện thị sau khi chạy lệnh cài đặt
    Kết quả hiện thị sau khi chạy lệnh cài đặt

    Lỗi thường gặp: Khi chạy lệnh make, hệ thống thường báo lỗi thiếu thư viện ncurses. Để khắc phục, bạn cần đảm bảo hệ thống đã cài đặt gói ncurses-devel (trên họ RedHat) hoặc libncursesw6 (trên họ Debian) trước khi biên dịch.

    Các tùy chọn phổ biến của lệnh progress

    Tùy chọnÝ nghĩa
    -q hoặc --quietTắt tất cả các thông báo.
    -d hoặc --debugHiển thị cảnh báo/lỗi nếu có.
    -w hoặc --waitHiển thị tốc độ I/O và thời gian còn lại.
    -W <giây> hoặc --wait-delay <giây>Đợi số giây trước khi ước lượng tốc độ I/O.
    -m hoặc --monitorLặp lại liên tục đến khi tất cả các tiến trình cần theo dõi kết thúc.
    -M hoặc --monitor-continuouslyTheo dõi không dừng lại, tương đương watch progress.
    -c <lệnh> hoặc --command <lệnh>Chỉ theo dõi một lệnh cụ thể và có thể dùng nhiều lần.
    -a <lệnh> hoặc --additional-command <lệnh>Thêm một lệnh tùy chỉnh vào danh sách các lệnh mặc định để theo dõi.
    -p <PID>Theo dõi một tiến trình có PID cụ thể.

    Hiển thị tất cả tiến trình Coreutils đang chạy

    Để kiểm tra xem hệ thống có lệnh xử lý dữ liệu nào đang chạy, bạn gõ lệnh:

    progress

    Kết quả hiển thị các lệnh đang chạy như sau:

    Kết quả hiển thị các lệnh đang chạy
    Kết quả hiển thị các lệnh đang chạy

    iconLưu ý

    Nếu không có lệnh nào trong danh sách hỗ trợ đang hoạt động, màn hình sẽ không hiển thị kết quả.

    2. Hiển thị tốc độ và thời gian ước tính (ETA)

    Để xem chi tiết tốc độ xử lý I/O và thời gian còn lại, bạn thêm tùy chọn -w:

    progress -w

    Kết quả sẽ hiển thị chi tiết tốc độ và thời gian ước tính hoàn thành như sau:

    Hiển thị tốc độ và thời gian ước tính (ETA)
    Hiển thị tốc độ và thời gian ước tính (ETA)

    Theo dõi tiến trình sao chép file

    Để sao chép file và hiển thị phần trăm ngay lập tức, bạn thực thi lệnh cp dưới dạng chạy nền và gọi progress:

    cp bigfile.img ./vietnix  & progress -mp $!

    Kết quả hiển thị lệnh như sau:

    Kết quả hiển thị khi sao chép file
    Kết quả hiển thị khi sao chép file

    Theo dõi tiến trình di chuyển file

    Lệnh sau đây sẽ giúp bạn chuyển file ISO sang thư mục đích, đồng thời hiện thanh tiến độ theo dõi quá trình di chuyển bằng progress:

    mv file.iso /destination/path/ & progress -mp $!

    Sau khi chạy lệnh, màn hình sẽ hiển thị kết quả như sau:

    Kết quả hiển thị sau khi di chuyển file thành công
    Kết quả hiển thị sau khi di chuyển file thành công
    progress -mp $!

    Giải thích cú pháp:

    • $!: Biến đặc biệt trong Bash có nhiệm vụ trả về PID của tiến trình chạy gần nhất ở chế độ nền (dùng với &).
    • progress: Công cụ dùng để theo dõi tiến trình của các lệnh như cp, mv, dd, tar,… đang chạy.
    • -p <PID>: Tùy chọn Process ID chỉ định rõ PID của tiến trình mà bạn muốn theo dõi.
    • -m: Tùy chọn monitor giúp bật chế độ theo dõi lặp lại đến khi tiến trình được theo dõi kết thúc.

    Theo dõi tiến trình nén với tar

    Để nén thư mục files/ thành file archive.tar.gz bằng tar, đồng thời dùng progress để theo dõi tiến độ, bạn thực thi lệnh sau:

    tar czf archive.tar.gz files/ | progress -m $!

    Kết quả thực thi lệnh như sau:

    Kết quả khi nén với tar thành công
    Kết quả khi nén với tar thành công

    Mẹo từ chuyên gia: Khi thao tác với tar, dung lượng đích của file nén thường không xác định trước được (do quá trình gzip thu nhỏ dung lượng liên tục). Do đó, thanh phần trăm % có thể không hiển thị đầy đủ đến 100%, nhưng bạn vẫn có thể theo dõi được lượng file đang được nén và tốc độ xử lý.

    4. Giám sát nhiều tiến trình từ một cửa sổ khác

    Nếu bạn đang chạy một lệnh lâu dài ở Terminal 1 và muốn kiểm tra tiến độ ở Terminal 2, hãy thực hiện theo các bước sau:

    Bước 1: Đầu tiên, bạn mở Terminal 1 và chạy lệnh tạo file giả lập:

    dd if=/dev/zero of=~/bigfile.img bs=1M count=5120

    Lệnh này tạo file bigfile.img dung lượng khoảng 5GB

    Bước 2: Sau đó, bạn mở Terminal 2 và chạy lệnh giám sát:

    watch progress -q

    Lệnh watch sẽ chạy lại progress sau mỗi 2 giây để cập nhật trạng thái.

    Chạy lại progress sau mỗi 2 giây để cập nhật trạng thái
    Chạy lại progress sau mỗi 2 giây để cập nhật trạng thái

    Mở trang tài liệu hướng dẫn của progress

    Để mở trang manual (tài liệu hướng dẫn) của lệnh progress, bạn thực thi lệnh sau:

    man progress

    Kết quả sẽ hiển thị các tùy chọn và các trường hợp cần sử dụng chi tiết:

    Trang tài liệu hướng dẫn của progress
    Trang tài liệu hướng dẫn của progress

    Những lưu ý khi sử dụng lệnh progress

    Dưới đây là những lưu ý mà bạn cần biết để sử dụng công cụ một cách hiệu quả:

    • Vấn đề về quyền hạn: Mặc định, progress chỉ nhìn thấy các tiến trình do user hiện tại khởi chạy. Để giám sát các tiến trình của hệ thống hoặc của người dùng khác, bạn bắt buộc phải chạy lệnh với quyền quản trị sudo progress.
    • Độ chính xác mang tính ước tính: Các chỉ số hiển thị như % hoàn thành, thời gian ETA,… được tính toán dựa trên kích thước file và vị trí con trỏ đọc/ghi hiện tại. Do đó, con số này chỉ mang tính tham khảo tương đối, đặc biệt khi tốc độ I/O của ổ đĩa không ổn định.
    • Xử lý với file thay đổi kích thước: Nếu bạn đang copy một file mà file đó vẫn đang được ghi thêm dữ liệu, progress có thể hiển thị phần trăm bị sai lệch hoặc nhảy lùi do tổng dung lượng đích thay đổi liên tục.
    • Giới hạn danh sách lệnh hỗ trợ: progress mặc định chỉ nhận diện các lệnh trong bộ Coreutils như cp, mv, dd, tar,… Nếu bạn muốn theo dõi một công cụ lạ hoặc lệnh tùy chỉnh, bạn cần sử dụng tùy chọn -c hoặc -a để khai báo thủ công để công cụ hiểu và hiển thị được.
    Những lưu ý khi sử dụng lệnh progress
    Những lưu ý khi sử dụng lệnh progress

    Câu hỏi thường gặp

    Vì sao chạy progress mà không thấy tiến trình nào, dù đang cp file rất lớn?

    Nguyên nhân thường gặp là:
    – Lệnh bạn đang chạy không thuộc nhóm coreutils mà progress nhận diện.​
    – Tiến trình chạy dưới user khác hoặc dưới quyền root trong khi bạn chỉ chạy progress với user thường, khiến không đọc được thông tin từ /proc của tiến trình đó.​

    Khi nào nên dùng tùy chọn -c và -a thay vì để progress tự phát hiện?

    Tùy chọn -c phù hợp khi bạn chỉ quan tâm đến một hoặc vài lệnh cụ thể. Trong khi đó, tùy chọn -a hữu ích khi bạn dùng một tool không nằm trong danh sách mặc định như rsync, httpd hay tool backup riêng và muốn bổ sung vào bộ lệnh mà progress sẽ theo dõi.​

    Có thể kết hợp progress với script hoặc hệ thống giám sát như thế nào?

    Bạn có thể dùng progress -q hoặc progress -m -q kèm grep, awk để trích xuất một số trường cần thiết rồi đẩy vào log hoặc Prometheus exporter.​ Ngoài ra, hãy kết hợp với watch hoặc systemd service để luôn có một dashboard CLI nhỏ hiển thị các tiến trình I/O quan trọng trên server.​

    progress Linux là công cụ dòng lệnh hữu ích giúp bạn theo dõi tiến trình các lệnh cp, mv, dd, tar, gzip,… chi tiết và chính xác trong thời gian thực với phần trăm, tốc độ và ETA rõ ràng. Nhờ khả năng quét /proc và giám sát nhiều tiến trình cùng lúc, bạn có thể chủ động kiểm soát các tác vụ sao chép, nén, ghi đĩa lớn mà không cần sửa lại lệnh đang chạy, từ đó làm việc an toàn hơn, hạn chế lỗi và tối ưu thời gian chờ trên hệ thống Linux của mình.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên các tiến trình sử dụng
    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên các tiến trình sử dụng

    Lệnh pidstat là công cụ chuyên dụng trên hệ thống Linux, được sử dụng để giám sát tài nguyên mà các tiến trình đang sử dụng. Bài viết này được mình đúc kết từ quá trình trực tiếp xử lý hàng nghìn ticket tối ưu hệ thống cho khách hàng tại Vietnix, nơi mà mỗi…

    20/04/2026

    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng
    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng

    smartctl là một tiện ích dòng lệnh giúp quản lý và giám sát hệ thống S.M.A.R.T., từ đó theo dõi chi tiết sức khỏe ổ cứng HDD/SSD trong môi trường máy chủ lẫn máy trạm cá nhân. Trong bài viết này, bạn sẽ tìm hiểu cách cài đặt, sử dụng các lệnh smartctl quan trọng…

    14/04/2026

    cryptsetup là gì? Cách mã hóa phân vùng với cryptsetup (LUKS) trên Linux
    cryptsetup là gì? Cách mã hóa phân vùng với cryptsetup (LUKS) trên Linux

    cryptsetup là tiện ích dòng lệnh nguồn mở trong Linux dùng để quản lý mã hóa đĩa dựa trên dm-crypt và chuẩn LUKS, hỗ trợ tạo volume an toàn với nhiều khóa và tương thích cao. Bài viết này hướng dẫn toàn diện về cryptsetup từ cài đặt, quy trình mã hóa, quản lý key…

    14/04/2026

    Aureport là gì? Hướng dẫn sử dụng lệnh aureport trên Linux
    Aureport là gì? Hướng dẫn sử dụng lệnh aureport trên Linux

    Aureport là công cụ dòng lệnh mạnh mẽ trong hệ thống auditd Linux, chuyên tạo báo cáo thống kê tóm tắt từ các tệp nhật ký kiểm toán. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng aureport để giám sát bảo mật và phân tích hoạt động hệ thống hiệu quả. Những…

    09/04/2026

    linux

    lenh

    text