30 ví dụ ps command hữu ích để giám sát quy trình Linux

Trong bài viết này, chúng ta sẽ xem xét 30 ví dụ hữu ích về các ps command để theo dõi các quá trình đang chạy trên hệ thống Linux. Lưu ý rằng ps tạo ra đầu ra với một dòng tiêu đề, đại diện cho ý nghĩa của mỗi cột thông tin, bạn có thể tìm thấy ý nghĩa của tất cả các nhãn trên trang man ps.

ps (quá trình trạng thái) là một tiện ích native Unix/Linux để xem thông tin về một số quá trình đang chạy trên hệ thống: nó đọc thông tin này từ các tệp ảo trong hệ thống tệp /proc. Đây là một trong những tiện ích quan trọng cho quản trị hệ thống đặc biệt trong việc giám sát quá trình, giúp bạn hiểu được điều gì đang xảy ra trong hệ thống Linux.

Nó có nhiều tùy chọn để thay đổi đầu ra, tuy nhiên, bạn sẽ thấy rằng chỉ có một số ít trong số chúng thực sự hữu ích cho việc sử dụng hàng ngày.

Liệt kê tất cả quá trình trong Shell hiện tại

1. Nếu bạn chạy lệnh ps mà không có bất kỳ đối số nào, nó sẽ hiển thị các quá trình cho shell hiện tại.

$ ps 
List Current Running Processes

In tất cả các quá trình ở các định dạng khác nhau

2. Hiển thị mọi quá trình hoạt động trên hệ thống Linux ở định dạng chung (Unix/Linux).

$ ps -A
OR
$ ps -e
List Processes in Standard Format

3. Hiển thị tất cả các quá trình theo định dạng BSD.

$ ps au
OR
$ ps axu
List Processes in BSD Format

4. Để thực hiện một liệt kê định dạng đầy đủ, thêm cờ -f hoặc -F.

$ ps -ef
OR
$ ps -eF
List Processes in Long List Format

Hiển thị quá trình đang chạy của người dùng

5. Bạn có thể chọn tất cả các quá trình được sở hữu bởi bạn (người chạy lệnh ps, root trong trường hợp này), gõ:

$ ps -x 

6. Để hiển thị các quá trình của một người dùng dựa trên ID người dùng thực (RUID) hoặc tên, sử dụng cờ -U.

$ ps -fU tecmint
OR
$ ps -fu 1000
List User Processes by ID

7. Để chọn các quá trình của người dùng dựa trên ID người dùng hiệu quả (EUID) hoặc tên, sử dụng tùy chọn -u.

$ ps -fu tecmint
OR
$ ps -fu 1000

In tất cả các quá trình chạy với quyền root (ID thực và hiệu quả)

8. Lệnh dưới đây cho phép bạn xem mọi quá trình chạy với quyền người dùng root (ID thực và hiệu quả) theo định dạng người dùng.

$ ps -U root -u root 
Display Root User Running Processes

Hiển thị quá trình nhóm

9. Nếu bạn muốn liệt kê tất cả các quá trình thuộc sở hữu của một nhóm cụ thể (ID nhóm thực (RGID) hoặc tên), gõ.

$ ps -fG apache
OR
$ ps -fG 48
Display Group Processes

10. Để liệt kê tất cả các quá trình thuộc sở hữu của tên nhóm hiệu quả (hoặc phiên), gõ.

$ ps -fg apache

Hiển thị quá trình bằng PID và PPID

11. Bạn có thể liệt kê các quá trình theo PID như sau.

$ ps -fp 1178
List Processes by PID

12. Để chọn quá trình theo PPID, gõ.

$ ps -f --ppid 1154
List Process by PPID

13. Chọn bằng danh sách PID.

$ ps -fp 2226,1154,1146
List Processes by PIDs

Hiển thị quá trình theo TTY

14. Để chọn các quá trình theo tty, sử dụng cờ -t như sau.

$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty1
List Processes by TTY

In cây quá trình

15. Một cây quá trình hiển thị cách các quá trình trên hệ thống liên kết với nhau; những quá trình mà cha của chúng đã bị giết bị nhận nuôi bởi init (hoặc systemd).

$ ps -e --forest 
List Process Tree

16. Bạn cũng có thể in cây quá trình cho một quá trình cụ thể như sau.

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd 
List Tree View of Process

In các tiểu trình của quá trình

17. Để in tất cả các tiểu trình của một quá trình, sử dụng cờ -L, điều này sẽ hiển thị cột LWP (quá trình nhẹ) cũng như cột NLWP (số lượng các quá trình nhẹ).

$ ps -fL -C httpd
List Process Threads

Chỉ định định dạng đầu ra tùy chỉnh

Bằng cách sử dụng tùy chọn -o hoặc --format, ps cho phép bạn xây dựng định dạng đầu ra được xác định bởi người dùng như được hiển thị bên dưới.

18. Để liệt kê tất cả các định dạng, bao gồm cờ L.

$ ps L

19. Lệnh dưới đây cho phép bạn xem PID, PPID, tên người dùng và lệnh của một quá trình.

$ ps -eo pid,ppid,user,cmd
List Processes with Names

20. Dưới đây là một ví dụ khác về định dạng đầu ra tùy chỉnh hiển thị nhóm hệ thống tệp, giá trị nice, thời gian bắt đầu và thời gian đã trôi qua của một quá trình.

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
List Process ID Information

21. Để tìm tên quá trình sử dụng PID của nó.

$ ps -p 1154 -o comm=
Find Process using PID

Hiển thị quá trình cha và con

22. Để chọn một quá trình cụ thể bằng tên của nó, sử dụng cờ -C, điều này cũng sẽ hiển thị tất cả các quá trình con của nó.

$ ps -C sshd
Find Parent Child Process

23. Tìm tất cả các PID của tất cả các thể hiện của một quá trình, hữu ích khi viết các tập lệnh cần đọc PIDs từ đầu ra hoặc tệp std.

$ ps -C httpd -o pid=
Find All Process PIDs

24. Kiểm tra thời gian thực thi của một quá trình.

$ ps -eo comm,etime,user | grep httpd

Đầu ra dưới đây cho thấy dịch vụ HTTPD đã chạy trong 1 giờ, 48 phút và 17 giây.

Find Process Uptime

Khắc phục sự cố hiệu năng hệ thống Linux

Nếu hệ thống của bạn không hoạt động như nên, ví dụ: nếu nó chậm bất thường, bạn có thể thực hiện một số sửa chữa hệ thống như sau.

26. Tìm quá trình đang chạy hàng đầu theo bộ nhớ và sử dụng CPU cao nhất trong Linux.

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
OR
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
Find Top Running Processes

27. Để kết thúc quá trình Linux/ứng dụng không phản hồi hoặc bất kỳ quá trình nào đang sử dụng thời gian CPU cao.

Đầu tiên, tìm PID của quá trình hoặc ứng dụng không phản hồi.

$ ps -A | grep -i stress

Sau đó, sử dụng lệnh kill để chấm dứt nó ngay lập tức.

$ kill -9 2583 2584
Find and Kill a Process

In thông tin bảo mật

28. Hiển thị ngữ cảnh bảo mật (cụ thể cho SELinux) như sau.

$ ps -eM
OR
$ ps --context
Find SELinux Context

29. Bạn cũng có thể hiển thị thông tin bảo mật theo định dạng do người dùng xác định bằng lệnh này.

$ ps -eo  euser,ruser,suser,fuser,f,comm,label
List SELinux Context by Users

Thực hiện giám sát quá trình thời gian thực bằng công cụ Watch

30. Cuối cùng, vì ps hiển thị thông tin dưới dạng tĩnh, bạn có thể sử dụng tiện ích theo dõi để thực hiện giám sát quá trình thời gian thực với đầu ra lặp đi lặp lại, hiển thị sau mỗi giây như trong lệnh dưới đây (chỉ định một lệnh ps tùy chỉnh để đạt được mục tiêu của bạn).

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
Real Time Process Monitoring

Quan trọng: ps command chỉ hiển thị thông tin tĩnh, để xem đầu ra được cập nhật thường xuyên, bạn có thể sử dụng các công cụ như htop; top và glances: hai cái cuối cùng thực sự là các công cụ giám sát hiệu năng hệ thống Linux.