30 ví dụ về lệnh ps trên Centos / Ubuntu / Debian / Fedora

Trong bài viết này, chúng ta sẽ xem 30 ví dụ sử dụng lệnh ps để giám sát các tiến trình đang chạy trên hệ thống Linux.

Lệnh ps là lệnh gì?

Lệnh ps (processes status) là một tiện ích Unix/Linux dùng để xem thông tin về các tiến 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 tiến trình, giúp bạn hiểu được những gì đang diễn ra trên hệ thống Linux.

Lệnh “ps” có nhiều tùy chọn để xử lý đầu ra, tuy nhiên, bạn chỉ cần sử dụng một số tùy chọn nhỏ mà thực sự hữu ích cho việc sử dụng hàng ngày.

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 của lệnh này.

30 ví dụ về giám sát quy trình trong Linux

Liệt kê tất cả các quy 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 tiến trình cho shell hiện tại.

$ ps 

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình đang chạy hiện tại

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

2. hiển thị tất cả các tiến trình hoạt động trên hệ thống Linux trong định dạng chung (Unix/Linux).

$ ps -A
OR
$ ps -e

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình ở định dạng chuẩn

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

$ ps au
OR
$ ps axu

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình ở định dạng BSD

4. Để thực hiện một danh sách đầy đủ định dạng, bạn có thể thêm tùy chọn -f hoặc -F.

$ ps -ef
OR
$ ps -eF

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình ở định dạng danh sách dài

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

5. Bạn có thể chọn tất cả các tiến trình thuộc sở hữu của bạn (người chạy lệnh ps, trong trường hợp này là người dùng root) hãy gõ:

$ ps -x 

6. Để hiển thị các tiến 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, bạn có thể sử dụng tùy chọn -U.

$ ps -fU tecmint
OR
$ ps -fu 1000

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình của người dùng theo ID

7. Để hiển thị các tiến trình của một 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

Hiển thị tất cả các tiến trình đang chạy với quyền root (ID thực và ID hiệu quả)

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

$ ps -U root -u root 

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

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

Hiển thị quy trình nhóm

9. Nếu bạn muốn liệt kê tất cả các tiến 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), bạn có thể sử dụng lệnh sau:

$ ps -fG apache
OR
$ ps -fG 48

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Hiển thị quy trình nhóm

10. Để liệt kê tất cả các tiến trình thuộc sở hữu bởi tên nhóm hiệu quả (hoặc phiên làm việc), bạn có thể sử dụng lệnh sau:

$ ps -fg apache

Hiển thị các quy trình theo PID và PPID

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

$ ps -fp 1178

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình theo PID

12. Để chọn quy trình theo PPID, hãy nhập:

$ ps -f --ppid 1154

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê quy trình theo PPID

13. Bạn có thể thực hiện lựa chọn sử dụng một danh sách PID như sau:

$ ps -fp 2226,1154,1146

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình theo PID

Hiển thị quy trình theo TTY

14. Để lựa chọn các tiến trình bằng tty, bạn có thể sử dụng tùy chọn -t như sau:

$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty1

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình theo TTY

Hiển thị cây tiến trình (process tree)

15. Cây tiến trình hiển thị cách các tiến trình trên hệ thống liên kết với nhau; các tiến trình mà tiến trình cha của chúng đã bị kết thúc sẽ được nhận bởi tiến trình init (hoặc systemd).

$ ps -e --forest 

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê cây tiến trình

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

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd 

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê dạng cây của tiến trình

Hiển thị luồng tiến trình

17. Để hiển thị tất cả các luồng của một tiến trình, sử dụng tùy chọn -L. Điều này sẽ hiển thị cột LWP (lightweight process) cũng như cột NLWP (số lượng lightweight processes).

Lệnh tương ứng là:

$ ps -fL -C httpd

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các luồng xử lý

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

Sử dụng tùy chọn -o hoặc --format, lệnh ps cho phép bạn xây dựng định dạng đầu ra tùy chỉnh theo ý muốn của bạn.

18. Để liệt kê tất cả các định dạng đặc biệt, bạn có thể sử dụng tùy chọn -L. Ví dụ:

$ 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

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê các quy trình có tên

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

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê thông tin ID quy trình

Tìm tên quá trình bằng PID

$ ps -p 1154 -o comm=

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Tìm quy trình bằng PID

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

22. Để chọn một quá trình cụ thể bằng tên của nó và hiển thị tất cả các quá trình con của nó, bạn có thể sử dụng tùy chọn -C cùng với lệnh ps. Dưới đây là cú pháp:

$ ps -C sshd

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Tìm quá trình cha-con

23. Để tìm tất cả các PID của tất cả các phiên bản của một quá trình, bạn có thể sử dụng lệnh pgrep. Dưới đây là cú pháp:

$ ps -C httpd -o pid=

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Tìm tất cả các PID quy trình

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.

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Tìm thời gian hoạt động của quy trình

Sửa lỗi hiệu suất hệ thống Linux

Nếu hệ thống của bạn không hoạt động đúng, ví dụ như nó chậm một cách bất thường, bạn có thể thực hiện một số giải pháp sửa lỗi hệ thống như sau:

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

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

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Tìm các quy trình đang chạy hàng đầu

27. Để kết thúc quá trình Linux/unresponsive applications hoặc bất kỳ quá trình nào đang sử dụng nhiều thời gian CPU, bạn cần tìm PID (Process ID) của quá trình đó.

$ 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

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Tìm và kết thúc mọi tiến trình

Hiển thị thông tin bảo mật

28. Hiển thị ngữ cảnh bảo mật (đặc biệt là cho SELinux) như sau:

$ ps -eM
OR
$ ps --context

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Tìm bối cảnh SELinux

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 sau:

$ ps -eo  euser,ruser,suser,fuser,f,comm,label

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Liệt kê ngữ cảnh SELinux theo người dùng

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

30. Cuối cùng, vì lệnh ps hiển thị thông tin tĩnh, bạn có thể sử dụng công cụ watch để thực hiện giám sát quá trình theo thời gian thực với đầu ra lặp lại, được 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'

Sử dụng lệnh ps để giám sát quy trình Linux và 30 ví dụ điển hình

Giám sát quy trình thời gian thực

Lưu ý quan trọng: lệnh ps 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ông cụ cuối cùng thực sự là các công cụ giám sát hiệu suất hệ thống Linux.

Bạn cũng có thể muốn đọc các bài viết liên quan sau đây:

  • Cách tìm tên quá trình bằng số PID trong Linux.
  • Tìm các quá trình đang chạy hàng đầu theo sử dụng bộ nhớ và CPU cao nhất trong Linux.
  • Hướng dẫn sử dụng các lệnh kill, pkill và killall để kết thúc một quá trình trong Linux.
  • Cách tìm và kết thúc các quá trình đang chạy trong Linux.
  • Cách khởi chạy lệnh Linux trong nền và tách quá trình khỏi cửa sổ terminal.

Lệnh ps có cực nhiều ứng dụng về xem thông tin tiến trình hệ thống, bạn có thể áp dụng thông qua các ví dụ cụ thể ở trên. Hy vọng những ví dụ này sẽ giúp bạn nhuần nhuyễn hơn trong việc sử dụng hệ điều hành Linux.

Mọi người cũng tìm kiếm: debian ps, linux ps command, ubuntu ps -aux

Mọi người cùng tìm kiếm: viết 1 lệnh trên ubuntu để huỷ tất cả các tiến trình đang chạy được 30 phút