Lệnh ps trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh ps (process status) của Linux để giám sát và quản lý các tiến trình đang chạy trên hệ thống của bạn. Lệnh ps là một công cụ cơ bản cho các systemadmin và nhà phát triển, cung cấp thông tin chi tiết về các tiến trình hiện đang chạy, bao gồm ID tiến trình, người dùng, mức sử dụng CPU và bộ nhớ, v.v. Bạn sẽ bắt đầu bằng cách hiểu cách sử dụng cơ bản của lệnh ps, sau đó tìm hiểu cách lọc các tiến trình theo người dùng và cuối cùng khám phá việc giám sát mức sử dụng CPU và bộ nhớ của các tiến trình đang chạy. Lab này bao gồm các kỹ năng giám sát và quản lý hệ thống thiết yếu, rất quan trọng để quản lý hiệu quả các hệ thống dựa trên Linux.

Tìm hiểu lệnh ps

Trong bước này, bạn sẽ tìm hiểu về lệnh ps (process status), đây là một lệnh Linux cơ bản được sử dụng để hiển thị thông tin về các tiến trình đang chạy trên hệ thống.

Lệnh ps cung cấp ảnh chụp nhanh về các tiến trình hiện đang chạy trên hệ thống, bao gồm ID tiến trình (PID), người dùng, mức sử dụng CPU và bộ nhớ, và các thông tin liên quan khác.

Hãy bắt đầu bằng cách chạy lệnh ps cơ bản:

ps

Ví dụ đầu ra:

  PID TTY          TIME CMD
 1234 pts/0    00:00:00 bash
 5678 pts/0    00:00:00 ps

Đầu ra hiển thị tiến trình shell hiện tại (bash) và chính lệnh ps.

Để xem thông tin chi tiết hơn về các tiến trình đang chạy, bạn có thể sử dụng các tùy chọn sau:

ps -ef

Ví dụ đầu ra:

UID        PID  PPID  C STIME TTY          TIME CMD
labex     1234  4321  0 10:30 pts/0    00:00:00 /bin/bash
labex     5678  1234  0 10:30 pts/0    00:00:00 ps -ef

Tùy chọn -e hiển thị tất cả các tiến trình và tùy chọn -f cung cấp danh sách đầy đủ định dạng, bao gồm ID người dùng (UID), ID tiến trình (PID), ID tiến trình cha (PPID), mức sử dụng CPU (C), thời gian bắt đầu (STIME), thiết bị đầu cuối (TTY), thời gian CPU (TIME) và lệnh (CMD).

Bạn cũng có thể lọc đầu ra theo các tiêu chí cụ thể, chẳng hạn như người dùng đang chạy các tiến trình:

ps -u labex

Ví dụ đầu ra:

  PID TTY          TIME CMD
 1234 pts/0    00:00:00 bash
 5678 pts/0    00:00:00 ps

Lệnh này hiển thị tất cả các tiến trình thuộc sở hữu của người dùng labex.

Lọc tiến trình theo người dùng

Trong bước này, bạn sẽ tìm hiểu cách lọc danh sách các tiến trình đang chạy theo người dùng sở hữu chúng.

Lệnh ps cung cấp một số tùy chọn để lọc danh sách tiến trình, một trong số đó là tùy chọn -u hoặc --user. Tùy chọn này cho phép bạn hiển thị các tiến trình thuộc sở hữu của một người dùng cụ thể.

Hãy bắt đầu bằng cách liệt kê tất cả các tiến trình thuộc sở hữu của người dùng labex:

ps -u labex

Ví dụ đầu ra:

  PID TTY          TIME CMD
 1234 pts/0    00:00:00 bash
 5678 pts/0    00:00:00 ps

Lệnh này hiển thị tất cả các tiến trình thuộc sở hữu của người dùng labex.

Bạn cũng có thể sử dụng lệnh grep để lọc thêm đầu ra của lệnh ps. Ví dụ: để tìm tất cả các tiến trình thuộc sở hữu của người dùng labex đang chạy lệnh bash:

ps -ef | grep -i labex | grep -i bash

Ví dụ đầu ra:

labex     1234  4321  0 10:30 pts/0    00:00:00 /bin/bash

Trong lệnh này, ps -ef liệt kê tất cả các tiến trình, grep -i labex đầu tiên lọc đầu ra để chỉ hiển thị các tiến trình thuộc sở hữu của người dùng labexgrep -i bash thứ hai lọc đầu ra để chỉ hiển thị các tiến trình đang chạy lệnh bash.

Tùy chọn -i trong các lệnh grep làm cho tìm kiếm không phân biệt chữ hoa chữ thường, vì vậy nó sẽ khớp với cả chữ hoa và chữ thường của "labex" và "bash".

Giám sát mức sử dụng CPU và bộ nhớ

Trong bước này, bạn sẽ tìm hiểu cách sử dụng lệnh ps để giám sát mức sử dụng CPU và bộ nhớ của các tiến trình đang chạy.

Để xem mức sử dụng CPU và bộ nhớ của tất cả các tiến trình, bạn có thể sử dụng lệnh ps với tùy chọn -o để tùy chỉnh đầu ra:

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

Ví dụ đầu ra:

  PID USER     %CPU %MEM COMMAND
 1234 labex     2.0  0.1 /bin/bash
 5678 labex     0.5  0.2 ps -eo pid,user,%cpu,%mem,cmd

Lệnh này hiển thị thông tin sau cho mỗi tiến trình:

  • PID: ID tiến trình
  • USER: Người dùng sở hữu tiến trình
  • %CPU: Phần trăm CPU mà tiến trình sử dụng
  • %MEM: Phần trăm bộ nhớ mà tiến trình sử dụng
  • COMMAND: Lệnh đã khởi động tiến trình

Bạn cũng có thể sắp xếp đầu ra theo mức sử dụng CPU hoặc bộ nhớ để xác định các tiến trình tiêu thụ nhiều tài nguyên hệ thống nhất:

ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu

Ví dụ đầu ra:

  PID USER     %CPU %MEM COMMAND
 5678 labex     2.0  0.2 ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu
 1234 labex     1.5  0.1 /bin/bash

Lệnh này sắp xếp đầu ra theo mức sử dụng CPU giảm dần, vì vậy tiến trình sử dụng nhiều CPU nhất sẽ được hiển thị trước tiên.

Tương tự, bạn có thể sắp xếp theo mức sử dụng bộ nhớ:

ps -eo pid,user,%cpu,%mem,cmd --sort=-%mem

Ví dụ đầu ra:

  PID USER     %CPU %MEM COMMAND
 5678 labex     2.0  0.2 ps -eo pid,user,%cpu,%mem,cmd --sort=-%mem
 1234 labex     1.5  0.1 /bin/bash

Lệnh này sắp xếp đầu ra theo mức sử dụng bộ nhớ giảm dần, vì vậy tiến trình sử dụng nhiều bộ nhớ nhất sẽ được hiển thị trước tiên.

Tóm tắt

Trong lab này, bạn đã tìm hiểu về lệnh ps (process status), đây là một lệnh Linux cơ bản được sử dụng để hiển thị thông tin về các tiến trình đang chạy trên hệ thống. Bạn bắt đầu với lệnh ps cơ bản và khám phá các tùy chọn để hiển thị thông tin chi tiết hơn, chẳng hạn như các tùy chọn -e-f. Bạn cũng đã học cách lọc danh sách tiến trình theo người dùng sở hữu các tiến trình đó, bằng cách sử dụng tùy chọn -u hoặc --user. Ngoài ra, bạn đã đề cập đến cách giám sát mức sử dụng CPU và bộ nhớ của các tiến trình đang chạy.

Lab cung cấp một sự hiểu biết toàn diện về lệnh ps và các ứng dụng thực tế của nó trong việc quản lý và giám sát các tiến trình đang chạy trên hệ thống Linux.

400+ câu lệnh phổ biến trong Linux