Vì mọi tiến trình (trừ tiến trình đầu tiên) trong hệ thống Linux đều có tiến trình cha, nên đôi khi mọi thứ sẽ dễ hiểu hơn nếu tất cả các tiến trình được hiển thị theo cấu trúc cây. Bạn sẽ vui mừng khi biết rằng có một tiện ích dòng lệnh - được gọi là pstree - hiển thị cây các tiến trình.
Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh pstree bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 22.04 LTS.
Và đây là nội dung trang hướng dẫn của công cụ này nói về lệnh này:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh pstree hoạt động:
Vì vậy, bạn có thể thấy đây là cách pstree tạo ra thông tin liên quan đến quy trình trong đầu ra.
Vì vậy, bạn có thể thấy lệnh pstree hiện cũng hiển thị các tùy chọn dòng lệnh cho một số quy trình.
Tuy nhiên, nếu muốn, bạn có thể buộc công cụ mở rộng các cây giống hệt nhau, bạn có thể thực hiện điều này bằng tùy chọn dòng lệnh -c.
Trong đó PID là ID của quy trình bạn muốn làm nổi bật. Ví dụ, tôi đã làm nổi bật tiến trình firefox trên hệ thống của mình bằng lệnh sau:
Vì vậy, bạn có thể thấy tên 'firefox' được làm nổi bật một chút so với các tên khác.
Vì vậy, bạn có thể thấy rằng ID nhóm tiến trình được hiển thị dưới dạng số thập phân trong dấu ngoặc đơn sau mỗi tên tiến trình.
Lưu ý rằng kiểu sắp xếp này cũng được gọi là sắp xếp số.
Ví dụ:
Vì vậy, trong trường hợp này, đầu ra sau được tạo ra trên hệ thống của tôi:
Ví dụ, tôi muốn giới hạn đầu ra của Pstree chỉ cho quy trình firefox trên hệ thống của mình, vì vậy tôi đã thực hiện lệnh sau:
Và đây là đầu ra mà công cụ hiển thị:
Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh pstree bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 22.04 LTS.
Lệnh pstree của Linux
Như đã đề cập ở phần đầu, lệnh pstree hiển thị một cây các quy trình. Cú pháp của lệnh này như sau:
Mã:
pstree [tùy chọn]
Mã:
pstree hiển thị các quy trình đang chạy dưới dạng cây. Cây này có gốc là
pid hoặc init nếu bỏ qua pid. Nếu tên người dùng được chỉ định, tất cả
cây quy trình có gốc tại các quy trình do người dùng đó sở hữu sẽ được hiển thị.
pstree hợp nhất trực quan các nhánh giống hệt nhau bằng cách đặt chúng trong dấu ngoặc vuông
và thêm tiền tố là số lần lặp lại, ví dụ:
init-+-getty
|-getty
|-getty
`-getty
trở thành
init---4*[getty]
Các luồng con của một quy trình được tìm thấy trong quy trình cha và được
hiển thị với tên quy trình trong dấu ngoặc nhọn, ví dụ:
icecast2---13*[{icecast2}]
Nếu pstree được gọi là pstree.x11 thì nó sẽ nhắc người dùng ở
cuối dòng nhấn return và sẽ không trả về cho đến khi điều đó xảy ra?
đã viết. Điều này hữu ích khi pstree được chạy trong xterminal.
Một số tham số hạt nhân hoặc gắn kết, chẳng hạn như tùy chọn hidepid cho
procfs, sẽ ẩn thông tin cho một số quy trình. Trong những tình huống này
pstree sẽ cố gắng xây dựng cây mà không có thông tin này, hiển thị
tên quy trình dưới dạng dấu chấm hỏi.
Câu hỏi 1. Làm thế nào để sử dụng lệnh pstree?
Cách sử dụng cơ bản rất đơn giản: tất cả những gì bạn phải làm là thực thi 'pstree' mà không có bất kỳ tùy chọn nào.
Mã:
pstree
Vì vậy, bạn có thể thấy đây là cách pstree tạo ra thông tin liên quan đến quy trình trong đầu ra.
Câu 2. Làm thế nào để pstree bao gồm cả các đối số dòng lệnh trong đầu ra?
Bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn dòng lệnh -a.
Mã:
pstree -a
Vì vậy, bạn có thể thấy lệnh pstree hiện cũng hiển thị các tùy chọn dòng lệnh cho một số quy trình.
Câu hỏi 3. Làm thế nào để buộc pstree mở rộng các cây con giống hệt nhau trong đầu ra?
Theo mặc định, lệnh pstree sẽ hợp nhất các nhánh giống hệt nhau bằng cách đặt chúng trong dấu ngoặc vuông và thêm tiền tố là số lần lặp lại. Tương tự như thế này:Tuy nhiên, nếu muốn, bạn có thể buộc công cụ mở rộng các cây giống hệt nhau, bạn có thể thực hiện điều này bằng tùy chọn dòng lệnh -c.
Mã:
pstree -c
Câu hỏi 4. Làm thế nào để pstree làm nổi bật một quy trình cụ thể?
Trong trường hợp bạn muốn công cụ làm nổi bật một quy trình cụ thể trong đầu ra, hãy sử dụng tùy chọn dòng lệnh -H.
Mã:
pstree -H [PID]
Mã:
pstree -H 3124
Vì vậy, bạn có thể thấy tên 'firefox' được làm nổi bật một chút so với các tên khác.
Câu hỏi 5. Làm thế nào để pstree hiển thị ID nhóm tiến trình trong đầu ra?
Đối với điều này, hãy sử dụng tùy chọn dòng lệnh -g.
Mã:
pstree -g
Vì vậy, bạn có thể thấy rằng ID nhóm tiến trình được hiển thị dưới dạng số thập phân trong dấu ngoặc đơn sau mỗi tên tiến trình.
Câu hỏi 6. Làm thế nào để sắp xếp pstree theo PID?
Theo mặc định, pstree sắp xếp các quy trình có cùng tổ tiên theo tên. Tuy nhiên, nếu muốn, bạn cũng có thể sắp xếp pstree theo PID, một việc bạn có thể làm bằng tùy chọn dòng lệnh -n.
Mã:
pstree -n
Câu hỏi 7. Làm thế nào để pstree hiển thị cây quy trình cụ thể cho một người dùng?
Nếu bạn muốn pstree hiển thị tất cả các cây quy trình có gốc tại các quy trình do một người dùng cụ thể sở hữu, thì tất cả những gì bạn phải làm là truyền tên của người dùng đó làm đầu vào cho lệnh.Ví dụ:
Mã:
pstree himanshu
Câu hỏi 8. Làm thế nào để hạn chế Pstree cho một quy trình cụ thể?
Nếu bạn muốn pstree chỉ hiển thị thông tin cha và con cho một quy trình cụ thể, hãy sử dụng tùy chọn -s.
Mã:
pstree -s [PID]
Mã:
pstree -s 3124