Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn dùng lệnh pstree để kiểm tra cây tiến trình trong Linux chính xác

    Nguyễn Hưng

    Ngày đăng:

    21/04/2026

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

    21/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:

    21/04/2026

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

    21/04/2026

    Mục lục

    Lệnh pstree là một lệnh dòng lệnh trong Linux dùng để hiển thị các tiến trình đang chạy dưới dạng cây cha – con. Việc dùng lệnh pstree sẽ giúp bạn hiểu rõ quan hệ cha – con giữa các tiến trình để truy vết nguồn gốc một process bất thường hoặc ngốn tài nguyên. Bài viết này được mình đúc kết từ quá trình trực tiếp xử lý các trường hợp treo server do tiến trình con gây ra cho hàng ngàn khách hàng. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu rõ lợi ích và cách sử dụng lệnh pstree qua các ví dụ cụ thể.

    Những điểm chính

    • Quan điểm của mình: Trong các tình huống server bị overload, pstree là công cụ tốt nhất để bạn biết chính xác dịch vụ nào đang sinh ra hàng loạt tiến trình con gây lãng phí tài nguyên.
    • Khái niệm: Hiểu rõ cách thức hiển thị tiến trình dưới dạng sơ đồ cây phân cấp của lệnh pstree để nắm bắt luồng hoạt động từ gốc đến các ứng dụng con.
    • Lợi ích khi sử dụng: Biết cách dùng pstree để tinh gọn giao diện giám sát, truy vết nguồn gốc sự cố và quản lý các tiến trình bị treo hiệu quả hơn.
    • Các tùy chọn quan trọng: Làm chủ bảng tham số kỹ thuật để tùy biến hiển thị PID, tên người dùng, toàn bộ dòng lệnh và highlight tiến trình cụ thể.
    • Ví dụ sử dụng thực tế: Thành thạo các kỹ năng kiểm tra subprocess, đếm số lượng worker và kỹ thuật tìm kiếm tiến trình mồ côi chuyên nghiệp.
    • Lưu ý khi vận hành: Ghi nhớ các đặc điểm về dữ liệu tĩnh, cơ chế gộp nhánh và thứ tự sắp xếp mặc định để diễn giải chính xác tình trạng hệ thống.
    • Câu hỏi thường gặp: Giải đáp chi tiết các thắc mắc liên quan đến lệnh pstree.

    Lệnh pstree là gì?

    pstree (Process Tree) là công cụ dòng lệnh trong Linux dùng để hiển thị danh sách các tiến trình đang chạy dưới dạng sơ đồ cây phân cấp. Thay vì hiển thị một danh sách liệt kê dài dòng và rời rạc như lệnh ps hay top, pstree sắp xếp lại các tiến trình dựa trên mối quan hệ cha – con, giúp quản trị viên nhìn thấy rõ tiến trình nào đã sinh ra tiến trình nào.

    Trong cấu trúc cây của lệnh pstree:

    • Gốc: Cây luôn bắt đầu từ tiến trình khởi tạo đầu tiên của hệ thống, thường là systemd hoặc init với PID là 1.
    • Nhánh: Từ tiến trình gốc, cây tỏa ra các nhánh đại diện cho các dịch vụ và ứng dụng con đang chạy trên máy chủ.
    pstree dùng để hiển thị danh sách các tiến trình đang chạy dưới dạng sơ đồ cây phân cấp
    pstree dùng để hiển thị danh sách các tiến trình đang chạy dưới dạng sơ đồ cây phân cấp

    Cú pháp và các tùy chọn phổ biến của lệnh pstree

    Cú pháp lệnh

    Cú pháp lệnh pstree như sau:

    pstree [options] [PID|user]

    Trong đó:

    • [options]: Là các tùy chọn giúp thay đổi cách hiển thị kết quả.
    • [PID|user]: Chỉ định gốc của cây:
      • Nếu truyền một PID: pstree 1943 sẽ vẽ cây với tiến trình PID 1943 làm gốc.
      • Nếu truyền một tên user: pstree alice sẽ hiển thị tất cả cây tiến trình thuộc về user đó.

    Các tùy chọn quan trọng của lệnh pstree

    Dưới đây là bảng giải thích chi tiết các tùy chọn thường dùng nhất của lệnh pstree:

    Tùy chọnCông dụng
    -pHiển thị Process ID (PID) bên cạnh tên của từng tiến trình.
    -aHiển thị toàn bộ câu lệnh khởi chạy và các tham số đi kèm.
    -uHiển thị user sở hữu tiến trình.
    -hHighlight tiến trình hiện tại bạn đang thao tác trên terminal.
    -nSắp xếp các tiến trình theo thứ tự PID thay vì alphabet.
    -npSắp xếp tiến trình con theo PID và hiển thị PID bên cạnh tên tiến trình.
    -lHiển thị đầy đủ dòng lệnh của tiến trình, không cắt bớt khi quá dài.
    -s <PID>In ra chuỗi tiến trình cha dẫn tới PID được chỉ định, giúp xem tiến trình đó xuất phát từ đâu.
    <tên người dùng>Khi truyền một username, chỉ hiển thị cây các tiến trình thuộc về người dùng đó.
    -cTắt tính năng gộp nhánh. Lệnh sẽ bung toàn bộ từng tiến trình con giống nhau ra thành từng dòng riêng biệt thay vì hiển thị dạng 3*[...].
    -C ageHiển thị mã màu sắc theo thời gian sống của tiến trình. Ví dụ: Tiến trình vừa chạy trong 60 giây qua có màu xanh lá, chạy hơn 1 giờ có màu vàng.
    -gHiển thị Process Group ID (PGID) để quản lý nhóm tiến trình tập trung.

    Những lợi ích khi sử dụng lệnh pstree

    Việc sử dụng lệnh pstree mang lại những lợi ích quan trọng trong việc quản trị hệ thống:

    • Hiểu rõ mối quan hệ cha – con: Lợi ích lớn nhất của pstree là khả năng hiển thị sự phụ thuộc giữa các tiến trình, giúp bạn hiểu rõ luồng hoạt động của hệ thống.
    • Tinh gọn màn hình hiển thị: Thay vì liệt kê hàng trăm dòng cho các tiến trình giống hệt nhau, lệnh pstree tự động gộp chúng lại thành một nhánh duy nhất, giúp giao diện gọn gàng và dễ đọc hơn rất nhiều so với lệnh ps.
    • Truy vết nguồn gốc sự cố: Khi thấy một tiến trình lạ hoặc tiêu tốn tài nguyên, pstree giúp bạn truy ngược lên trên để tìm ra tiến trình cha đã khởi chạy. Điều này hỗ trợ tốt trong việc phát hiện phần mềm độc hại hoặc các script chạy ngầm.
    • Hỗ trợ dọn dẹp tiến trình hiệu quả: Lệnh pstree giúp bạn xác định đúng tiến trình root để tắt thay vì tắt thủ công từng tiến trình con. Khi đó, bạn chỉ cần tắt tiến trình cha, toàn bộ cây tiến trình con bên dưới sẽ tự động dừng theo.
    • Phát hiện Orphan Processes: Lệnh pstree giúp quản trị viên dễ dàng nhận diện các tiến trình bị mất kết nối với tiến trình cha và được hệ thống nhận nuôi, từ đó có phương án xử lý phù hợp.
    • Trực quan hóa luồng: Với tùy chọn hiển thị thread, pstree cho phép nhìn thấy cấu trúc đa luồng của một ứng dụng phức tạp dưới dạng cây, giúp lập trình viên hiểu cách ứng dụng phân chia tác vụ.
    Những lợi ích khi sử dụng lệnh pstree
    Những lợi ích khi sử dụng lệnh pstree

    Hướng dẫn cài đặt lệnh pstree trên Linux

    Hầu hết các bản phân phối Linux hiện nay đều đã cài đặt sẵn lệnh pstree. Tuy nhiên, nếu hệ thống báo lỗi không tìm thấy lệnh (command not found), bạn có thể dễ dàng cài đặt vì pstree là một phần cốt lõi của bộ tiện ích psmisc.

    Cú pháp cài đặt cơ bản:

    • Trên Ubuntu/Debian:
    sudo apt install psmisc
    • Trên CentOS/RHEL:
    sudo yum install psmisc
    • Trên Arch Linux:
    sudo pacman -S psmisc

    Mẹo từ chuyên gia: Bộ công cụ psmisc ngoài lệnh pstree ra còn chứa lệnh killallfuser cực kỳ mạnh mẽ. Khi cài đặt xong, bạn nên tìm hiểu thêm 2 lệnh này để quản trị server hiệu quả hơn.

    Xem toàn bộ cây tiến trình kèm PID

    Để có cái nhìn tổng quan về hệ thống và xác định nhanh nhóm tiến trình bất thường, bạn dùng lệnh dưới đây:

    pstree -p
    Xem toàn bộ cây tiến trình kèm PID
    Xem toàn bộ cây tiến trình kèm PID

    Mẹo từ chuyên gia: Nếu hệ thống của bạn quá lớn, đừng chạy pstree -p trực tiếp vì sẽ làm trôi màn hình. Bạn hãy kết hợp với less để cuộn xem dễ dàng hơn: pstree -p | less. Đây là cách mình thường dùng để tìm kiếm các nhánh tiến trình bị treo nhanh chóng.

    Kiểm tra tất cả tiến trình con của một PID cụ thể

    Khi cần kiểm tra một tiến trình bất thường, bạn có thể xem tất cả tiến trình con mà tiến trình đó tạo ra bằng lệnh sau:

    pstree -p 728
    Kiểm tra tất cả tiến trình con của một PID cụ thể
    Kiểm tra tất cả tiến trình con của một PID cụ thể

    Thao tác này rất hữu ích khi bạn cần debug các ứng dụng tạo ra quá nhiều subprocess.

    Kiểm tra tiến trình theo từng user

    Thao tác này cần thiết khi bạn cần kiểm tra hệ thống để xem user nào đang chạy những gì. Ví dụ, để kiểm tra user root, bạn chạy lệnh dưới đây:

    pstree -u root
    Kiểm tra tiến trình theo từng user
    Kiểm tra tiến trình theo từng user

    Bạn có thể thấy user deploy hiện đang kết nối SSH tới và đang mở vi để chỉnh sửa file. Để kiểm tra kỹ hơn xem họ đang sửa file nào, bạn có thể thực hiện kiểm tra tiến trình bằng pslsof.

    Mẹo từ chuyên gia: Nếu bạn phát hiện một user bình thường (không có quyền root) lại đang sở hữu quá nhiều cây tiến trình lạ kết nối ra Internet, đó là dấu hiệu 90% website hoặc user đó đã bị hacker khai thác. Bạn cần lập tức tạm khóa user và dùng lsof -p <PID> để kiểm tra file đang thực thi.

    Kết hợp pstree và awk để đếm tiến trình con theo tên

    Giả sử, bạn muốn biết hiện có tổng cộng bao nhiêu process con của httpd mà không muốn đếm thủ công, bạn hãy dùng lệnh sau để xuất ra kết quả định lượng:

    pstree -p | awk '/httpd/ {count++} END {print count " httpd workers"}'
    đếm tiến trình con theo tên
    Đếm tiến trình con theo tên
    Kết quả hiển thị giúp bạn cái nhìn định lượng cụ thể
    Kết quả hiển thị giúp bạn cái nhìn định lượng cụ thể

    Lệnh này giúp bạn có cái nhìn định lượng cụ thể thay vì chỉ quan sát trực quan.

    Tìm tiến trình mồ côi bằng ps và pstree

    Để tìm các tiến trình mồ côi (có PPID là 1 do được init/systemd nhận nuôi) và phân tích nhóm của chúng, bạn sử dụng chuỗi lệnh sau:

    ps -eo ppid,pid,cmd | grep '^ *1 ' | awk '{print $2}' | xargs -I{} pstree -p {}

    Trong đó:

    • ppid == 1: Xác định các tiến trình mồ côi.
    • xargs: Chạy pstree cho từng PID tìm được để phân tích nhóm.
    Tìm tiến trình mồ côi bằng ps và pstree
    Tìm tiến trình mồ côi bằng ps và pstree

    Lưu ý khi sử dụng lệnh pstree

    Khi sử dụng pstree, bạn cần lưu ý những điểm sau để tránh hiểu sai thông tin hệ thống hoặc gặp khó khăn khi thao tác:

    • Dữ liệu là tĩnh: Khác với top hay htop tự động cập nhật liên tục, pstree chỉ chụp lại trạng thái hệ thống tại đúng thời điểm bạn gõ lệnh. Nếu một tiến trình vừa tắt ngay sau đó, màn hình kết quả sẽ không tự thay đổi.
    • Mặc định không hiển thị PID: pstree không tham số sẽ chỉ hiển thị tên tiến trình. Nếu bạn muốn dùng lệnh này để tìm ID nhằm tắt một ứng dụng treo, bạn bắt buộc phải thêm cờ -p để thấy số PID bên cạnh tên.
    • Chú ý các nhánh bị gộp: Để làm gọn màn hình, pstree sẽ gộp các tiến trình con giống nhau lại. Do đó, bạn cần chú ý con số phía trước để nhận thức đúng về số lượng thực tế, tránh chủ quan nghĩ rằng chỉ có một tiến trình đang chạy.
    • Thứ tự sắp xếp mặc định: pstree mặc định sắp xếp các tiến trình cùng cấp theo tên, không phải theo thứ tự thời gian khởi chạy hay PID. Điều này có thể làm thay đổi cấu trúc so với thứ tự khởi động thực tế. Nếu muốn sắp xếp theo PID (thời gian), bạn cần dùng cờ -n.
    • Tên lệnh có thể bị cắt ngắn: Trong một số trường hợp, nếu tên tiến trình hoặc đường dẫn quá dài, pstree có thể hiển thị không đầy đủ. Bạn nên dùng cờ -a nếu muốn xem đầy đủ câu lệnh khởi chạy và các tham số đi kèm.
    • Phân biệt Thread và Process: Khi sử dụng cờ -t để hiển thị luồng, cây sơ đồ sẽ trở nên rất lớn và phức tạp. Bạn cần cẩn thận để không nhầm lẫn giữa một luồng con và một tiến trình độc lập vì chúng có thể hiển thị khá giống nhau trên cây.
    Lưu ý khi sử dụng lệnh pstree
    Lưu ý khi sử dụng lệnh pstree

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

    Các dấu ngoặc nhọn {…} trong kết quả pstree có ý nghĩa gì?

    Khi bạn thấy tên tiến trình nằm trong dấu ngoặc nhọn thì đó là đại diện cho các luồng của một tiến trình cha, chứ không phải là một tiến trình độc lập. Để ẩn các luồng này, bạn có thể không dùng tùy chọn -t hoặc dùng tùy chọn -c để gộp chúng lại.

    Làm thế nào để tắt toàn bộ một cây tiến trình?

    Nguyên tắc hoạt động của Linux là khi tiến trình cha bị tắt, các tiến trình con thường cũng sẽ bị tắt theo. Do đó, cách nhanh nhất để tắt cả một cây là dùng pstree -p để tìm PID của tiến trình cha cao nhất trong nhánh đó, sau đó dùng lệnh kill để kết thúc PID đó.

    pstree và ps aux –forest có giống nhau không?

    Về mặt hiển thị, cả hai đều thể hiện cấu trúc cây phân cấp. Tuy nhiên:
    pstree: Trực quan và gọn gàng hơn vì pstree gộp các tiến trình con giống nhau lại.
    ps aux --forest: Hiển thị chi tiết hơn về tài nguyên của từng nhánh nhưng giao diện sẽ dài và khó nhìn hơn.

    Lệnh pstree giúp bạn hiểu rõ cấu trúc cha – con của các tiến trình, từ đó xác định sự cố nhanh hơn, giúp tối ưu hóa hệ thống hiệu quả hơn và xử lý vấn đề một cách chính xác. Ngoài ra, việc nắm vững pstree cùng các tùy chọn sẽ giúp bạn rút ngắn đáng kể thời gian khoanh vùng sự cố, đặc biệt là trong các tình huống hệ thống bị tấn công hoặc quá tải do một ứng dụng sinh ra quá nhiều tiến trình con.

    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

    Kết nối Claude Google Search Console (GSC)
    Kết nối Claude Google Search Console (GSC)

    Kết nối Claude Google Search Console (GSC) qua MCP Server giúp bạn trực tiếp truy cập và phân tích dữ liệu SEO bằng AI một cách nhanh chóng và tự động. Trong bài viết này, mình sẽ hướng dẫn bạn cách thiết lập kết nối này từng bước để khai thác dữ liệu GSC hiệu…

    21/04/2026

    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

    linux

    lenh

    text