Cac loai process trên linux

Trong các hệ điều hành đa quy trình như Linux, các quy trình (process) tạo thành một phần không thể thiếu trong quy trình làm việc của hệ thống. Đôi khi, người dùng cần liệt kê các tiến trình đang chạy trên hệ thống để phục vụ mục đích giám sát. Trong những tình huống như vậy, các tiện ích dòng lệnh Linux có thể hữu ích.

Lệnh ps là một trong những công cụ hiển thị thông tin liên quan đến các quy trình trên hệ thống Linux. Hãy xem lệnh ps và một số ví dụ về cách sử dụng nó.

Lệnh ps là gì?

Quy trình là thành phần cơ bản của việc tính toán (computing) trong máy Linux. Mỗi chương trình bạn mở thực thi một hoặc nhiều quy trình chịu trách nhiệm về hoạt động của máy tính. Từ một ứng dụng chỉnh sửa video nâng cao đến một tiện ích đơn giản như lệnh mv, mọi thứ đều bao gồm các quy trình.

Lệnh ps, viết tắt của Process Status (trạng thái quy trình), rất hữu ích khi bạn muốn lấy danh sách tất cả các tiến trình đang chạy trên hệ thống của mình. Lệnh này cũng cung cấp các thông tin liên quan đến các quy trình này cho người dùng.

Cách sử dụng lệnh ps trong Linux

Cú pháp cơ bản của lệnh ps là:

ps [options]

Chạy lệnh ps mà không có bất kỳ đối số nào sẽ tạo ra kết quả sau:

ps

Cac loai process trên linux
Cac loai process trên linux

Thông tin sau được cung cấp trong kết quả nói trên.

  • PID: ID quy trình của quy trình được đánh dấu
  • TTY: Hiển thị tên của terminal bạn đang sử dụng
  • TIME: Thời gian được CPU phân bổ cho quy trình
  • CMD: Lệnh chịu trách nhiệm khởi chạy quy trình

Liệt kê tất cả các quy trình

Để có danh sách tất cả các quy trình trên hệ thống Linux, hãy sử dụng flag -A hoặc -e với lệnh ps.

ps -A
ps -e

Cac loai process trên linux
Cac loai process trên linux

Xem các quy trình được liên kết với terminal

Flag -T sẽ hiển thị danh sách tất cả các quá trình liên quan đến terminal.

ps -T

Bạn sẽ thấy một đầu ra giống như thế này.

Cac loai process trên linux
Cac loai process trên linux

Xem các quy trình không liên quan đến terminal

Flag -a sẽ liệt kê các quy trình không được liên kết với terminal hiện tại.

ps -a

Màn hình sẽ hiển thị một đầu ra.

Cac loai process trên linux
Cac loai process trên linux

Phủ nhận các tùy chọn được chỉ định

Bạn cũng có thể sử dụng flag -N hoặc –deselect với lệnh ps để đảo ngược hoạt động của một đối số cụ thể.

Ví dụ, tùy chọn -T hiển thị các quy trình được liên kết với terminal. Thêm flag -N hoặc –deselect vào lệnh sẽ hiển thị các quy trình không được liên kết với terminal hiện tại.

ps -T -N
ps -T --deselect

Cac loai process trên linux
Cac loai process trên linux

Hiển thị các cột tùy chỉnh trong đầu ra

Lệnh ps mặc định hiển thị các cột sau: PID, TTY, TIME và CMD. Tuy nhiên, bạn có thể chỉnh sửa các cột này và hiển thị các chi tiết khác.

Flag -eo cho phép bạn chỉ định các cột mà bạn muốn lấy trong đầu ra.

ps -eo pid, uname, pcpu, stime, pri, f

Cac loai process trên linux
Cac loai process trên linux

Đổi tên các cột trong đầu ra

Bạn cũng có thể đổi tên các nhãn cột trong đầu ra. Flag -o sẽ cho phép bạn làm điều này.

ps -e -o pid=Process_ID, uid=User_ID, com=COMMAND

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

Để nhận danh sách các quy trình hiện đang chạy trên hệ thống của bạn, hãy chuyển flag -ax bằng lệnh ps. -A là viết tắt của All .

ps -ax

Cac loai process trên linux
Cac loai process trên linux

Các quy trình hiển thị ở định dạng BSD

Định dạng Linux truyền đối số bằng lệnh sử dụng ký tự – (gạch nối). Mặt khác, định dạng BSD không bao gồm bất kỳ ký tự đặc biệt nào với flag đối số.

Ví dụ, ps -A (định dạng Linux) sẽ hiển thị danh sách tất cả các quy trình. BSD tương đương với lệnh này là:

ps au

trong đó a là viết tắt của All (Tất cả) và u biểu thị user (người dùng).

Cac loai process trên linux
Cac loai process trên linux

Danh sách định dạng đầy đủ các quy trình

Để nhận thông tin chi tiết liên quan đến các quy trình, hãy chuyển tùy chọn -ef hoặc -eF bằng lệnh.

ps
0

Cac loai process trên linux
Cac loai process trên linux

Đầu ra được đề cập ở trên chứa các thông tin sau về các quy trình.

  • UID: ID người dùng của người dùng chịu trách nhiệm về quy trình
  • PID: ID quy trình của mục nhập
  • PPID: ID quy trình của quy trình mẹ (parent process)
  • C: Thông tin về lịch chạy và lượng sử dụng CPU của quy trình
  • STIME: Thời gian bắt đầu quy trình
  • TTY: Tên của terminal mà bạn hiện đang sử dụng
  • TIME: Lượng thời gian CPU được sử dụng bởi quy trình
  • CMD: Lệnh thực thi quy trình

Nhận danh sách các quy trình liên quan đến người dùng

Tùy chọn -u hiển thị danh sách tất cả các quy trình được bắt đầu bởi một người dùng cụ thể.

ps
1

Cac loai process trên linux
Cac loai process trên linux

Hiển thị các quy trình liên quan đến người dùng gốc (root user)

Để hiển thị tất cả các quy trình được chạy bởi người dùng root, hãy chuyển quyền root bằng flag -U và -u.

ps
2

Cac loai process trên linux
Cac loai process trên linux

Nhận PID quy trình

Để lấy ID quy trình của một quy trình cụ thể, hãy sử dụng flag -C với lệnh.

ps
3

Thay thế process-name bằng tên của quy trình. Đầu ra sẽ hiển thị ID của quá trình.

ps
4

Cac loai process trên linux
Cac loai process trên linux

Liệt kê các luồng (thread) của một quy trình cụ thể

Bạn có thể biết rằng một quy trình có thể chứa nhiều luồng, mỗi luồng chịu trách nhiệm cho một nhiệm vụ cụ thể. Để hiển thị danh sách các luồng của một tiến trình, hãy sử dụng flag (cờ) -L với lệnh ps. Lưu ý rằng bạn sẽ phải chuyển ID quy trình của tiến trình cùng với lệnh.

ps
5

Ví dụ

ps
6

Cac loai process trên linux
Cac loai process trên linux

Quy trình hiển thị được liên kết với một nhóm cụ thể

Lấy danh sách các quy trình liên quan đến một nhóm nhất định cũng dễ dàng. Sử dụng cờ -fG với lệnh mặc định.

ps
7

Ngoài ra, bạn cũng có thể chuyển ID nhóm thay vì tên nhóm (group name)

ps
8

Ví dụ

ps
9

Cac loai process trên linux
Cac loai process trên linux

Hiển thị các quy trình ở định dạng cây

Để có được biểu diễn dạng cây phân cấp của các tiến trình đang chạy trong Linux:

ps -A
ps -e
0

Lệnh nói trên sẽ hiển thị tất cả các tiến trình liên quan đến bash.

Cac loai process trên linux
Cac loai process trên linux

Giám sát các quá trình đang chạy trong Linux

Biết được quy trình nào đang chạy trên máy tính của bạn có thể hữu ích nếu bạn thiếu tài nguyên. Bạn có thể dễ dàng loại bỏ các tiến trình Linux không phản hồi mà bạn không muốn trên hệ thống của mình bằng dòng lệnh.