Lệnh ps – Giám sát và Lọc Thông tin Tiến Trình Trong Linux
Trong quản trị hệ thống Linux, việc giám sát tiến trình (process) là kỹ năng bắt buộc để xử lý sự cố, tối ưu tài nguyên, và phát hiện hoạt động bất thường. Một trong những công cụ mạnh nhất cho nhiệm vụ này chính là lệnh ps.
1. Các kiểu cú pháp của lệnh ps
Lệnh ps hỗ trợ nhiều phong cách cú pháp khác nhau, tùy thuộc vào thói quen hoặc nền tảng của người quản trị:
⚠ Lưu ý: Các phong cách này có thể kết hợp, nhưng đôi khi xung đột. Nếu đầu ra không như mong đợi, hãy kiểm tra cú pháp bạn đang dùng.
2. Sử dụng cơ bản
Mặc định, ps chỉ liệt kê các tiến trình thuộc về user hiện tại:
ps
Ví dụ:
PID TTY TIME CMD 20393 pts/1 00:00:00 bash 30251 pts/1 00:00:00 ps
Cột dữ liệu:
3. Thêm thông tin chi tiết với tùy chọn -f
ps -f
Bổ sung các trường:
Ví dụ:
UID PID PPID C STIME TTY TIME CMD ed 20393 20392 0 12:41 pts/1 00:00:00 -bash ed 30387 20393 0 13:20 pts/1 00:00:00 ps -f
4. Liệt kê tiến trình của tất cả người dùng
Đây là lệnh phổ biến khi kiểm tra toàn bộ hệ thống, đặc biệt hữu ích khi hunting tiến trình bất thường.
5. Lọc kết quả theo tên tiến trình với tùy chọn -C
ps -fC sshd
Ví dụ trên chỉ liệt kê tiến trình sshd và thông tin đầy đủ.
Ưu điểm: nhanh, gọn.
Nhược điểm: cần biết chính xác tên tiến trình.
6. Lọc kết quả linh hoạt với grep
ps -ef | grep ssh.*
Ví dụ đầu ra:
root 892 1 0 Jun04 ? 00:00:00 /usr/sbin/sshd -D root 12698 892 0 Jun07 ? 00:00:00 sshd: ed [priv] ed 12784 12698 0 Jun07 ? 00:00:00 sshd: ed@pts/0 ...
Ưu điểm của grep:
7. Thực hành & tình huống thực tế
Trong quản trị hệ thống Linux, việc giám sát tiến trình (process) là kỹ năng bắt buộc để xử lý sự cố, tối ưu tài nguyên, và phát hiện hoạt động bất thường. Một trong những công cụ mạnh nhất cho nhiệm vụ này chính là lệnh ps.
1. Các kiểu cú pháp của lệnh ps
Lệnh ps hỗ trợ nhiều phong cách cú pháp khác nhau, tùy thuộc vào thói quen hoặc nền tảng của người quản trị:
- UNIX style: Tùy chọn có dấu gạch ngang - và có thể nhóm lại.
Ví dụ: ps -ef - BSD style: Tùy chọn không có dấu gạch ngang.
Ví dụ: ps aux - GNU long option: Dạng dài với hai dấu gạch ngang --.
Ví dụ: ps --pid 1234 --forest
⚠ Lưu ý: Các phong cách này có thể kết hợp, nhưng đôi khi xung đột. Nếu đầu ra không như mong đợi, hãy kiểm tra cú pháp bạn đang dùng.
2. Sử dụng cơ bản
Mặc định, ps chỉ liệt kê các tiến trình thuộc về user hiện tại:
ps
Ví dụ:
PID TTY TIME CMD 20393 pts/1 00:00:00 bash 30251 pts/1 00:00:00 ps
Cột dữ liệu:
- PID – Process ID
- TTY – Terminal thiết bị tiến trình đang gắn với
- TIME – Thời gian CPU đã tiêu thụ
- CMD – Lệnh thực thi tiến trình
3. Thêm thông tin chi tiết với tùy chọn -f
ps -f
Bổ sung các trường:
- UID – User ID của chủ sở hữu tiến trình
- PPID – Parent Process ID (tiến trình cha)
- C – % CPU sử dụng
- STIME – Thời điểm bắt đầu tiến trình
Ví dụ:
UID PID PPID C STIME TTY TIME CMD ed 20393 20392 0 12:41 pts/1 00:00:00 -bash ed 30387 20393 0 13:20 pts/1 00:00:00 ps -f
4. Liệt kê tiến trình của tất cả người dùng
- Cú pháp UNIX:
- Cú pháp BSD:
Đây là lệnh phổ biến khi kiểm tra toàn bộ hệ thống, đặc biệt hữu ích khi hunting tiến trình bất thường.
5. Lọc kết quả theo tên tiến trình với tùy chọn -C
ps -fC sshd
Ví dụ trên chỉ liệt kê tiến trình sshd và thông tin đầy đủ.
Ưu điểm: nhanh, gọn.
Nhược điểm: cần biết chính xác tên tiến trình.
6. Lọc kết quả linh hoạt với grep
ps -ef | grep ssh.*
- -e – Liệt kê tất cả tiến trình
- -f – Hiển thị đầy đủ thông tin
- | grep pattern – Lọc theo biểu thức chính quy (regex)
- ssh.* – Khớp tất cả chuỗi bắt đầu bằng “ssh” và theo sau bởi ký tự bất kỳ
Ví dụ đầu ra:
root 892 1 0 Jun04 ? 00:00:00 /usr/sbin/sshd -D root 12698 892 0 Jun07 ? 00:00:00 sshd: ed [priv] ed 12784 12698 0 Jun07 ? 00:00:00 sshd: ed@pts/0 ...
Ưu điểm của grep:
- Cho phép dùng ký tự đại diện, regex
- Kết hợp lọc theo nhiều điều kiện phức tạp hơn tùy chọn -C
7. Thực hành & tình huống thực tế
- SOC Analyst: Lọc nhanh tiến trình liên quan đến công cụ giám sát hoặc mã độc đang nghi ngờ.
- Network Engineer: Kiểm tra daemon dịch vụ mạng như sshd, nginx, snmpd.
- Incident Response: Dò tiến trình lạ chạy dưới tài khoản hệ thống (root) nhưng không thuộc ứng dụng hợp lệ.