Trong Linux, một phiên bản đang chạy của một chương trình được gọi là tiến trình. Đôi khi, khi làm việc trên máy Linux, bạn có thể cần tìm hiểu những tiến trình hiện đang chạy.
Có số lệnh mà bạn có thể sử dụng để tìm thông tin về các tiến trình đang chạy, với ps
, pstree
và top
là những lệnh thường được sử dụng nhất.
Bài viết này giải thích cách sử dụng lệnh ps
để liệt kê các quy trình hiện đang chạy và hiển thị thông tin về các quy trình đó.
Cách sử dụng lệnh ps
Cú pháp chung cho lệnh ps
như sau:
ps [OPTIONS]
Vì lý do lịch sử và khả năng tương thích, ps
chấp nhận một số loại tùy chọn khác nhau:
- Tùy chọn kiểu UNIX, đứng trước một dấu gạch ngang.
- Tùy chọn kiểu BSD, được sử dụng mà không có dấu gạch ngang.
- Các tùy chọn dài GNU, đứng trước hai dấu gạch ngang.
Các loại tùy chọn khác nhau có thể được kết hợp, nhưng trong một số trường hợp cụ thể, xung đột có thể xuất hiện, vì vậy tốt nhất bạn nên gắn bó với một loại tùy chọn.
Các tùy chọn BSD và UNIX có thể được nhóm lại.
Ở dạng đơn giản nhất, khi được sử dụng mà không có bất kỳ tùy chọn nào, ps
sẽ in ra bốn cột thông tin cho tối thiểu hai quy trình đang chạy trong trình bao hiện tại, chính trình bao và các quy trình chạy trong trình bao khi lệnh được gọi.
ps
Đầu ra bao gồm thông tin về shell ( bash
) và tiến trình đang chạy trong shell này ( ps
, lệnh mà bạn đã nhập):
PID TTY TIME CMD 1809 pts/0 00:00:00 bash 2043 pts/0 00:00:00 ps
Bốn cột được dán nhãn PID
, TTY
, TIME
, và CMD
.
PID
– ID quy trình. Thông thường, khi chạy lệnhps
, thông tin quan trọng nhất mà người dùng tìm kiếm là PID của tiến trình. Biết PID cho phép bạn loại bỏ một tiến trình bị trục trặc .TTY
– Tên của thiết bị đầu cuối điều khiển cho quá trình.TIME
– Thời gian CPU tích lũy của quá trình, được hiển thị bằng phút và giây.CMD
– Tên của lệnh được sử dụng để bắt đầu quá trình.
Kết quả ở trên không hữu ích lắm vì nó không chứa nhiều thông tin. Sức mạnh thực sự của lệnh ps
xuất hiện khi được khởi chạy cùng với các tùy chọn bổ sung.
Lệnh ps
chấp nhận một số lượng lớn các tùy chọn có thể được sử dụng để hiển thị một nhóm cụ thể của các quá trình và các thông tin khác nhau về quá trình này, nhưng chỉ có một số ít là cần thiết trong việc sử dụng ngày-to-ngày.
ps
được sử dụng thường xuyên nhất với sự kết hợp của các tùy chọn sau:
Hình thức BSD :
ps aux
- Tùy chọn
a
chops
hiển thị các tiến trình của tất cả người dùng. Chỉ các quy trình không liên kết với terminal và các quy trình của các group leader mới không được hiển thị. u
là viết tắt của một định dạng hướng tới người dùng cung cấp thông tin chi tiết về các quy trình.- Tùy chọn
x
chỉ thịps
vào danh sách các tiến trình mà không có terminal kiểm soát. Đó chủ yếu là các tiến trình được bắt đầu vào thời gian khởi động và chạy ở chế độ nền .
Các thông tin lệnh hiển thị trong mười một cột dán nhãn USER
, PID
, %CPU
, %MEM
, VSZ
, RSS
, STAT
, START
, TTY
, TIME
, và CMD
.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.8 77616 8604 ? Ss 19:47 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 19:47 0:00 [kthreadd] ...
Chúng ta đã giải thích PID
, TTY
, TIME
và CMD
nhãn. Dưới đây là giải thích về các nhãn khác:
USER
– Người dùng chạy tiến trình.%CPU
– Việc sử dụng cpu của quá trình.%MEM
– Tỷ lệ phần trăm kích thước đặt thường trú của tiến trình vào bộ nhớ vật lý trên máy.VSZ
– Kích thước bộ nhớ ảo của tiến trình trong KiB.RSS
– Kích thước của bộ nhớ vật lý mà tiến trình đang sử dụng.STAT
– Mã trạng thái của tiến trình, chẳng hạn nhưZ
(zombie),S
(sleep) vàR
(running).START
– Thời điểm lệnh bắt đầu.
Tùy chọn f
cho ps
hiển thị một cái nhìn cây của các tiến trình mẹ với các tiến trình con:
ps auxf
Lệnh ps
cũng cho phép bạn sắp xếp các đầu ra. Ví dụ: để sắp xếp đầu ra dựa trên việc sử dụng bộ nhớ , bạn sẽ sử dụng:
ps aux --sort=-%mem
Biểu mẫu UNIX :
ps -ef
- Tùy chọn
-e
chỉ thịps
để hiển thị tất cả các tiến trình. - Danh sách
-f
định dạng đầy đủ là viết tắt của danh sách, cung cấp thông tin chi tiết về các tiến trình.
Các thông tin lệnh hiển thị trong tám cột dán nhãn UID
, PID
, PPID
, C
, STIME
, TIME
, và CMD
.
UID PID PPID C STIME TTY TIME CMD root 1 0 0 19:47 ? 00:00:01 /sbin/init root 2 0 0 19:47 ? 00:00:00 [kthreadd] ...
Các nhãn chưa được giải thích có ý nghĩa sau:
UID
– Tương tự nhưUSER
, người dùng chạy tiến trình.PPID
– ID của tiến trình mẹ.C
– Tương tự như%CPU
, quá trình sử dụng CPU.STIME
– Tương tự nhưSTART
thời điểm lệnh bắt đầu.
Để chỉ xem các quy trình đang chạy với tư cách một người dùng cụ thể, hãy nhập lệnh sau, trong đó hocdevops
tên của người dùng là:
ps -f -U hocdevops -u hocdevops
Định dạng do người dùng xác định
Tùy chọn o
cho phép bạn xác định các cột được hiển thị khi chạy lệnh ps
.
Ví dụ, để chỉ in thông tin về PID
và COMMAND
, bạn sẽ chạy một trong các lệnh sau:
ps -efo pid,comm
ps auxo pid,comm
Sử dụng ps với các lệnh khác
ps
có thể được sử dụng kết hợp với các lệnh khác thông qua pipeline.
Nếu bạn muốn hiển thị đầu ra của lệnh ps
, mỗi trang chuyển nó đến lệnh less
:
ps -ef | less
Đầu ra của lệnh ps
có thể được lọc với grep
. Ví dụ: để chỉ hiển thị tiến trình thuộc về người dùng root mà bạn sẽ chạy:
ps -ef | grep root
Phần kết luận
Lệnh ps
là một trong những lệnh thường được sử dụng nhất khi xử lý sự cố các vấn đề trên các hệ thống Linux. Nó có nhiều tùy chọn, nhưng thông thường, hầu hết người dùng đang sử dụng ps aux
hoặc ps -ef
để thu thập thông tin về các tiến trình đang chạy.
Để biết thêm thông tin về ps
, hãy nhập man ps
thiết bị đầu cuối của bạn.
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.