Lệnh ps trong Linux (Lệnh killall trong Linux)

Lệnh ps là chữ viết tắt của Process Status và được sử dụng để liệt kê các tiến trình hiện đang chạy trong hệ thống. Sử dụng lệnh này để xác định tiến trình nào đang chạy và trạng thái đang chạy, tiến trình đã kết thúc chưa, tiến trình đã chết hay chưa, tiến trình nào đang chiếm quá nhiều tài nguyên, v.v.

Tiến trình được liệt kê bởi lệnh ps là một ảnh chụp nhanh của tiến trình hiện tại, tức là, nó không phải là động, mà là trạng thái của tiến trình tại thời điểm lệnh được thực thi. Lệnh thường được sử dụng kết hợp với ps là lệnh kill.

Mã trạng thái tương ứng với PS được định nghĩa như sau:

  • R: đang chạy
  • S: Chờ, ngủ
  • D: ngủ liên tục
  • T: đã dừng
  • X: sắp bị thu hồi
  • Z: đã kết thúc, chỉ còn lại tên hình ảnh gọi là quá trình zombie
  • W: hoán đổi bộ nhớ
  • N: quá trình ưu tiên thấp
  • <: quá trình ưu tiên cao
  • S: lãnh đạo quy trình
  • L: trạng thái bị khóa
  • l: trạng thái đa luồng
  • +: quá trình trước

Ba trạng thái phổ biến nhất của ps là R,S,D. Lệnh ps hỗ trợ ba định dạng cú pháp được sử dụng:

  • Kiểu UNIX, các tùy chọn có thể được kết hợp với nhau và phải có dấu gạch ngang “-” trước các tùy chọn;
  • Kiểu BSD, các tùy chọn có thể được kết hợp với nhau, nhưng không thể có dấu gạch ngang “-” trước các tùy chọn;
  • Kiểu GNU, các tùy chọn có hai dấu gạch nối “-” trước tùy chọn.

Tiếp theo, chúng ta hãy xem xét các tham số thường được sử dụng của lệnh PS:

  • ps-a: hiển thị tất cả các quy trình được thực thi dưới thiết bị đầu cuối, bao gồm các quy trình của những người dùng khác
  • ps-A: hiển thị tất cả các quy trình
  • ps-e: có chức năng tương tự như –A
  • ps-H: hiển thị cấu trúc cây, cho biết mối quan hệ giữa các chương trình
  • ps-f: quá trình hiển thị định dạng đầy đủ
  • ps a: hiển thị các quy trình được thực thi dưới thiết bị đầu cuối hiện tại
  • ps c: hiển thị tên thực của quá trình
  • ps e: liệt kê các biến môi trường được chương trình sử dụng
  • ps f: hiển thị cấu trúc cây với các ký tự ASCII để thể hiện mối quan hệ giữa các chương trình
  • ps x: hiển thị tất cả các quy trình, cho dù đang chạy trên thiết bị đầu cuối hay không
  • ps u: hiển thị các quy trình liên quan đến người dùng hoặc các thuộc tính liên quan đến người dùng
  • ps r: chỉ hiển thị các tiến trình đang chạy.

Ở đây, chúng ta chỉ liệt kê ngắn gọn một vài lệnh thường dùng, vì ps là lệnh liên quan đến chuỗi hiển thị lâu đời nhất nên nó có rất nhiều tham số, và có sự khác biệt lớn giữa việc có thêm hay không, nên chúng ta hãy kết hợp sử dụng các lệnh thường dùng trong công việc để tìm hiểu các thông số của nó. Và chúng ta cũng có thể học tất cả các lệnh của ps thông qua man ps:

  • Thực thi lệnh ps mà không có tham số: hiển thị tiến trình đang chạy hiện tại trong terminal, quá trình này ít được sử dụng.
  • 4 cột thông tin được hiển thị theo mặc định:

+ PID: Số tiến trình của lệnh đang chạy (CMD)

+ TTY: Vị trí (thiết bị đầu cuối) nơi lệnh được chạy

+ TIME: Thời gian xử lý CPU bị chiếm bởi lệnh đang chạy

+ CMD: Lệnh chạy bởi tiến trình