PS command – Từng bước để thông thạo

30/12/2020

Khi sử dụng hệ điều hành Linux, chắc hẳn mọi người đều đã biết đến câu lệnh ps. Bài viết này mình sẽ tập trung giới thiệu với mọi người thêm về câu lệnh này cũng như là các trường thông tin mà câu lện này cung cấp.

Mục lục

  1. Tổng quan
  2. Cách sử dụng
  3. Ý nghĩa một số trường thông tin
  4. Lệnh pstree
  5. Trạng thái của một tiến trình
  6. Tài liệu tham khảo

1. Tổng quan

ps (hay Process Status) là một tiện ích của Unix/Linux dùng để xem thông tin của các tiến trình đang chạy trong hệ thống. Đây có thể nói là một tiện ích quan trọng giúp bạn hiểu chuyện gì đang diễn ra trên hệ thống của bạn.

Tiện ích ps sẽ đọc thông tin tiến trình từ một file ảo nằm trong thư mục /proc. Nó sẽ cung cấp một số tuỳ chọn để cho bạn dễ dàng xem thông tin của các tiến trình. Trong bài này mình sẽ giới thiệu một vài câu lệnh phổ biến.

2. Cách sử dụng

Về cơ bản cấu trúc của câu lệnh sẽ là:

ps [option]

Lưu ý: bạn có thể xem qua các option bằng lệnh man ps

Ví dụ 1: Để xem thông tin shell hiện tại, gõ:

ps

Trong bảng này, ta sẽ thấy các thông tin sau:

Mục Ý nghĩa
PID Id của tiến trình
TTY Thông tin terminal mà người dùng đăng nhập
TIME Lượng CPU tính bằng phút giây mà tiến trình đó chạy
CMD Câu lệnh để thực hiện process đó

Lưu ý: Một số tiến trình ghi TIME là 00:00:00 (như trong ví dụ) thì các tiến trình đó không sử dụng bất cứ thời gian CPU nào. Thường đó sẽ là tiến trình cha (Parent process), các tiến trình con sẽ sử dụng nó để thực thi.

Ví dụ 2: Xem thông tin đầy đủ của tiến trình

Ta có thể xem thông tin của tiến trình theo cú pháp tiêu chuẩn hoặc cú pháp BSD.

  • Theo cú pháp tiêu chuẩn:
ps -ef ps -eF ps -ely
  • Theo cú pháp BSD:
ps ax ps aux

Lưu ý: một số trường mình sẽ giải thích cụ thể bên dưới.

Ví dụ 3: in các tiến trình theo dạng cây phân cấp.

Vì các tiến trình được phân cấp theo cha – con nên ta có thể theo dõi thông tin đó theo câu lệnh sau:

ps -ejH ps axjf

Ví dụ 4: Hiển thị thông tin về luồng (Thread)

Ngoài thông tin về tiến trình, bạn có thể xem các thông tin về luồng bằng câu lệnh:

ps -eLf ps axms

Ví dụ 5: để xem thông tin tiến trình thuộc nhóm người dùng nhất định.

Ta dùng lệnh như sau:

ps -fG [tên user]

Ví dụ 6: In ra thông tin tiến trình chạy dưới quyền root.

Ta dùng câu lệnh:

ps -U root -u root u

Ví dụ 7: In ra thông tin theo một số trường cụ thể.

Ngoài những thông tin có sẵn của các option (tuỳ chọn), ta có thể thêm một số trường thông tin khác để đưa ra ngoài bằng tuỳ chọn -o. Ví dụ, ta muốn xem thông tin pid, ppid, cmd, %mem, %cpu của tất cả các tiến trình đang chạy bằng lệnh:

ps -eo pid,ppid,cmd,%mem,%cpu

3. Ý nghĩa một số trường thông tin

Trường Ý nghĩa
CMD Câu lệnh thực thi tiến trình
%CPU Lượng cpu sử dụng
%MEM Lượng Ram tiêu thụ
PID Mã tiến trình
PPID Mã của tiến trình cha
UID mã người dùng
USER Tên người dùng
PRI độ ưu tiên của tiến trình
RSS Lượng bộ nhớ sử dụng thực
VSZ or SZ Lượng bộ nhớ ảo sử dụng
S or STAT Chứa đoạn mã code mô tả trạng thái của tiến trình
Start or STIME Thời gian mà câu lệnh đó khởi động. Nhỏ hơn 24h là “HH:MM:SS”, lớn hơn là “Mmm dd”
TTY Terminal liên quan tới tiến trình

4. Lệnh pstree

Ngoài lệnh ps ta cũng có thể sủ dụng lệnh pstree. Lệnh này còn giúp ta nhìn cấu trúc cây phân cấp của tiến trình một các dễ dàng.

Cú pháp câu lệnh:

pstree [option]

Lưu ý: Ở một số hệ điều hành, tiện ích này không có sẵn. Tiến hành cài đặt nó:

# Trên Fedora/Red Hat/CentOS sudo yum -y install psmisc  #Trên Ubuntu/Debian APT sudo apt-get -y install psmisc

Ví dụ 1: Xem thông tin tiến trình hiện tại

Lệnh:

pstree

Ví dụ 2: Xem tiến trình cùng với PID của nó.

Lệnh:

pstree -p

Ví dụ 3: Xem tiến trình cùng với câu lệnh của nó

Lệnh:

pstree -a

Ví dụ 4: Xem tiến trình cụ thể với highlight

Lệnh:

pstree -H [PID]]

Ví dụ 5: Xem cây tiến trình theo thứ tự PID

Kết hợp với tuỳ chọn -p để xem PID của tiến trình:

pstree -np

Ví dụ 6: Xem các tiến trình theo cây thuộc người dùng nào đó

Lệnh:

pstree [Tên người dùng]

5. Trạng thái của một tiến trình

Khi sử dụng lệnh ps, ta có thể xem được trạng thái của tiến trình đó là gì, thông qua trường STAT theo kí hiệu như sau:

Kí hiệu Giải thích
D Tiến trình ngủ liên tục (Uninterruptible)
R Tiến trình đang sẵn sàng hoặc đang chạy
S Tiến trình ngủ ngắt quãng (Interruptible)
T Đã bị dừng bởi tín hiệu kiểm soát hoặc bị theo dõi
W Phân trang (không có sẵn sau bản kernel 2.6.xx))
X Dead (ít gặp)
Z Zombie process

Một số kí tự đi kèm:

Kí hiệu Giải thích
< Ưu tiên cao
N Ưu tiên thấp
L có trang bị khoá trong bộ nhớ (do thời gian thực hoặc IO)
s Session leader
| Tiến trình đa luồng (CLONE_THREAD)
+ Tiến trình thuộc nhóm Foreground

Mô hình hoạt động:

Một tiến trình sẽ bắt đầu chu trình bằng trạng thái ‘R’ và sẽ bị kết thúc khi tiến trình cha đưa nó về trang thái ‘Z’.

6. Tài liệu tham khảo

  1. Câu lệnh ps
  2. Câu lệnh pstree
  3. Tài liệu tiếng việt về ps command
  4. Process status code

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

PS command – Từng bước để thông thạo

Khi sử dụng hệ điều hành Linux, chắc hẳn mọi người đều đã biết đến câu lệnh ps. Bài...
30/12/2020

Hướng dẫn thêm một plugin vào checkmk

Checkmk chỉ có thể giám sát những dịch vụ có sẵn thôi sao? Vậy SSH và APACHE thì sao? Nếu như tôi...
30/12/2020

Giới thiệu về Nginx Proxy Manager để quản lý reverse proxy bằng giao diện đồ họa

Bạn đã làm việc với Nginx? Bạn đã sử dụng tính năng reverse proxy cho các website bằng Nginx?...
30/12/2020