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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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=
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
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=
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.
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
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
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
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
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'
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