Khi làm việc trên máy Linux, đôi khi bạn có thể cần phải tìm hiểu những tiến trình nào hiện đang chạy. Có một số lệnh mà bạn có thể sử dụng để tìm thông tin về các tiến trình đang chạy, với ps
và top
là những lệnh được sử dụng phổ biến nhất.
Trong bài này, chúng ta sẽ nói về lệnh pstree
. Nó tương tự như ps
, nhưng thay vì liệt kê các tiến trình đang chạy, nó hiển thị chúng trong một cây. Định dạng dạng cây là một cách thuận tiện hơn để hiển thị hệ thống phân cấp tiến trình và làm cho đầu ra trực quan hơn.
Cách sử dụng
Cú pháp chung cho lệnh pstree
như sau:
ps [OPTIONS] [USER or PID]
Ở dạng đơn giản nhất khi được gọi mà không có bất kỳ tùy chọn hoặc đối số nào, pstree
sẽ hiển thị cấu trúc cây phân cấp của tất cả các tiến trình đang chạy:
pstree
systemd─┬─VBoxService───7*[{VBoxService}] ├─accounts-daemon───2*[{accounts-daemon}] ├─2*[agetty] ├─atd ├─cron ├─dbus-daemon ├─irqbalance───{irqbalance} ├─2*[iscsid] ├─lvmetad ├─lxcfs───2*[{lxcfs}] ├─networkd-dispat───{networkd-dispat} ├─nginx───2*[nginx] ...
Mục trên cùng / gốc trong cây là tiến trình root của tất cả các tiến trình hệ thống. Trong ví dụ này systemd
, đó là tiến trình đầu tiên bắt đầu khi khởi động.
pstree
hợp nhất các nhánh giống hệt nhau bằng cách đặt chúng giữa dấu ngoặc vuông và đặt tiền tố chúng bằng một số nguyên đại diện cho số nhánh. Điều này làm cho đầu ra dễ đọc hơn và hấp dẫn trực quan hơn.
Dưới đây là một ví dụ cho thấy cách sử dụng dấu ngoặc vuông:
├─2*[agetty]
giống như:
├─agetty ├─agetty
Để vô hiệu hóa việc hợp nhất các nhánh giống nhau, hãy sử dụng tùy chọn -c
:
pstree -c
Các luồng của một tiến trình được hiển thị dưới tiến trình root và được hiển thị bằng cách sử dụng tên tiến trình bên trong dấu ngoặc nhọn. Đây là một ví dụ:
├─lxcfs───2*[{lxcfs}]
Sử dụng tùy chọn -t
để hiển thị tên chủ đề đầy đủ. Nếu bạn muốn ẩn các chuỗi và chỉ hiển thị các tiến trình, hãy sử dụng tùy chọn -T
này.
Thông thường, pstree
hiển thị nhiều dòng đầu ra không vừa trên màn hình. Để xem kết quả đầu ra tại một thời điểm, hãy chuyển nó đến lệnh less
:
pstree | less
Nếu tên người dùng được cung cấp làm đối số, pstree
chỉ hiển thị các tiến trình do người dùng đó sở hữu. Ví dụ: lệnh sau sẽ chỉ hiển thị những tiến trình đã được khởi động bởi người dùng có tên “hocdevops”:
pstree hocdevops
Khi PID được chỉ định làm đối số, pstree
hiển thị một cây với tiến trình đã cho làm gốc của cây. Đây là một ví dụ:
pstree 1943
sshd───bash───pstree
Để hiển thị các tiến trình cha của tiến trình đã cho, hãy sử dụng tùy chọn -s
theo sau là PID tiến trình:
pstree -s 1943
systemd───sshd───sshd───bash───pstree
Hiển thị PID và PGID
Thông thường, khi chạy lệnh pstree
, thông tin quan trọng nhất mà người dùng tìm kiếm là ID tiến trình. Ví dụ, biết PID cho phép bạn loại bỏ một tiến trình bị trục trặc .
Các tùy chọn -p
chỉ thị pstree
để hiển thị PID:
pstree -p
PID được hiển thị trong dấu ngoặc đơn sau mỗi tiến trình hoặc chuỗi.
systemd(1)─┬─VBoxService(955)─┬─{VBoxService}(956) │ ├─{VBoxService}(957) │ ├─{VBoxService}(958) │ ├─{VBoxService}(959) │ ├─{VBoxService}(960) │ ├─{VBoxService}(961) │ └─{VBoxService}(962) ...
Theo mặc định, pstree
sắp xếp các tiến trình có cùng cha theo tên. Các tùy chọn -n
cho pstree
sử dụng loại số, tức là sắp xếp theo PID:
pstree -pn
ID nhóm tiến trình hoặc PGIDs là ID tiến trình của thành viên đầu tiên của nhóm tiến trình. Để xem PGID, hãy sử dụng tùy chọn -g
:
pstree -g
PID cũng được hiển thị trong dấu ngoặc đơn sau mỗi tiến trình hoặc chuỗi.
systemd(1)─┬─VBoxService(954)─┬─{VBoxService}(954) │ ├─{VBoxService}(954) │ ├─{VBoxService}(954) │ ├─{VBoxService}(954) │ ├─{VBoxService}(954) │ ├─{VBoxService}(954) │ └─{VBoxService}(954) ...
Khi PID hoặc PGID được hiển thị, việc hợp nhất sẽ bị tắt hoàn toàn.
Hiển thị đối số dòng lệnh
Một số chương trình có thể được gọi với các tùy chọn cấu hình được chỉ định dưới dạng đối số dòng lệnh.
Theo mặc định, pstree
không hiển thị cho bạn các đối số dòng lệnh cho các tiến trình đang chạy. Để xem tiến trình được bắt đầu như thế nào, hãy sử dụng lệnh cùng với tùy chọn -a
:
pstree -a
... ├─agetty -o -p -- \\u --keep-baud 115200,38400,9600 ttyS0 vt220 ├─agetty -o -p -- \\u --noclear tty1 linux ...
Làm nổi bật
pstree
cũng cho phép bạn đánh dấu các tiến trình để trình bày trực quan tốt hơn.
Tùy chọn -h
chỉ thị pstree
để làm nổi bật tiến trình hiện tại và tất cả tổ tiên của nó.
pstree -h
Để đánh dấu một tiến trình cụ thể, hãy sử dụng tùy chọn -H
theo sau là ID tiến trình:
pstree -H PID_NUMBER
Nếu phần đánh dấu không được hỗ trợ, lệnh sẽ thoát ra với lỗi.
Phần kết luận
Lệnh pstree
hiển thị các tiến trình đang chạy dưới dạng một cấu trúc cây.
Để biết thông tin về tất cả các tùy chọn pstree
có sẵn , hãy nhập man pstree
terminal của bạn.
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.