Khi bạn đang làm việc, đôi khi các chương trình của bạn đột nhiên bị đóng băng. Những lần khác, các chương trình vẫn đang chạy nhưng với mức tiêu thụ bộ nhớ hoặc bộ xử lý cao. Có một cách để khắc phục điều này trong Linux bằng cách sử dụng ps
( P rocess S tatus) lệnh. Sau đây chúng tôi hướng dẫn bạn cách sử dụng ps
lệnh trong Linux để liệt kê các tiến trình hiện đang chạy và PID của chúng. Sau đó, bạn có thể tìm và loại bỏ các quy trình tiêu tốn tài nguyên của bạn.
Sử dụng lệnh “ps”
ps
lệnh có thể được sử dụng riêng. Nó sẽ xuất ra bốn cột thông tin:
- PID :định danh duy nhất của tiến trình do hệ thống xác định. Đó là giá trị mà chúng tôi sử dụng để ngăn chặn một quá trình.
- TTY :thiết bị đầu cuối mà từ đó quá trình được bắt đầu.
- THỜI GIAN :tổng thời gian CPU được sử dụng bởi quá trình.
- CMD :lệnh tạo quy trình
Lưu ý rằng khi bạn sử dụng lệnh mà không có bất kỳ tùy chọn nào, nó không hiển thị cho bạn nhiều thông tin. Dưới đây là một số cách để làm cho nó hữu ích hơn.
1. Liệt kê quá trình của tất cả người dùng
Khi một số chương trình được cài đặt, đôi khi chúng cũng tạo ra một số người dùng bổ sung để chạy quy trình. Để liệt kê các quy trình của người dùng, hãy sử dụng -e
tùy chọn:
ps -e
và đầu ra của nó:
PID TTY TIME CMD 1 ? 00:00:02 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:00 kworker/0:0 4 ? 00:00:00 kworker/0:0H 5 ? 00:00:00 kworker/u256:0 6 ? 00:00:00 mm_percpu_wq
2. Liệt kê quy trình với nhiều thông tin hơn
Có thể có thêm thông tin khi bạn liệt kê quá trình đang chạy. Để thực hiện việc này, bạn có thể sử dụng ef
tùy chọn.
ps -ef
và đầu ra của nó:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 21:34 ? 00:00:03 /sbin/init maybe-ubiquity root 2 0 0 21:34 ? 00:00:00 [kthreadd] root 3 2 0 21:34 ? 00:00:00 [kworker/0:0] root 4 2 0 21:34 ? 00:00:00 [kworker/0:0H] root 6 2 0 21:34 ? 00:00:00 [mm_percpu_wq] root 7 2 0 21:34 ? 00:00:00 [ksoftirqd/0]
3. Lọc quy trình theo ID quy trình
Nếu bạn biết ID tiến trình của tiến trình đang chạy mà bạn muốn hiển thị, bạn có thể lọc nó cụ thể bằng -p
lá cờ. Điều này có thể nhận nhiều PID làm đối số, được phân tách bằng một dấu phẩy và không có dấu cách.
ps -ef -p 1234,5678,9012
4. Liệt kê các quy trình do người dùng sở hữu
Bạn cũng có thể liệt kê các quy trình do người dùng sở hữu bằng u
theo sau là tên của người dùng:
ps -u userName
và đầu ra của nó:
PID TTY TIME CMD 2832 ? 00:00:00 systemd 2842 ? 00:00:00 (sd-pam) 3043 ? 00:00:00 sshd 3044 pts/1 00:00:00 bash 18396 pts/1 00:00:00 ps
5. Liệt kê các quy trình kích hoạt
Có thể liệt kê tất cả các quy trình đang hoạt động bằng cách sử dụng ax
tùy chọn:
ps -ax
và đầu ra của nó:
PID TTY STAT TIME COMMAND 1 ? Ss 0:02 /sbin/init maybe-ubiquity 2 ? S 0:00 [kthreadd] 3 ? I 0:00 [kworker/0:0] 4 ? I< 0:00 [kworker/0:0H] 6 ? I< 0:00 [mm_percpu_wq] 7 ? S 0:00 [ksoftirqd/0]
6. Liệt kê các quy trình đang hoạt động với người dùng
Có thể liệt kê tất cả các quy trình đang hoạt động với người dùng khi bạn thêm -aux
cờ:
ps -aux
và đầu ra của nó:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 78132 9188 ? Ss 21:34 0:02 /sbin/init maybe-ubiquity root 2 0.0 0.0 0 0 ? S 21:34 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I 21:34 0:00 [kworker/0:0] root 4 0.0 0.0 0 0 ? I< 21:34 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? I< 21:34 0:00 [mm_percpu_wq] root 7 0.0 0.0 0 0 ? S 21:34 0:00 [ksoftirqd/0] root 8 0.0 0.0 0 0 ? I 21:34 0:00 [rcu_sched] root 9 0.0 0.0 0 0 ? I 21:34 0:00 [rcu_bh] root 10 0.0 0.0 0 0 ? S 21:34 0:00 [migration/0]
7. Lọc quá trình theo tên của chương trình
Có thể truy xuất thông tin về một chương trình cụ thể đang chạy bằng cách áp dụng bộ lọc trên ps
kết quả:
ps -aux | grep docker
và đầu ra của nó:
root 1508 0.0 2.2 1518156 90868 ? Ssl 21:34 0:03 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock userkub+ 18429 0.0 0.0 13144 1108 pts/1 S+ 23:57 0:00 grep --color=auto docker
Ngoài ra, bạn cũng có thể sử dụng C
tùy chọn để lọc quy trình theo tên của nó:
ps -C name
8. Hiển thị các Cột Cụ thể
Ngoài bốn cột mặc định, bạn có thể nhận được ps
để hiển thị một cột thông tin bổ sung. Ví dụ:
ps -e -o pid,uname,pcpu,pmem,comm
-o
cờ đặt các tùy chọn hiển thị đầu ra cụ thể cho ps
kết quả của lệnh. Xem danh sách đầy đủ các tùy chọn hiển thị tiêu chuẩn cho ps.
9. Hiển thị kết quả theo kiểu cây phân cấp
ps -e --forest
Điều này sử dụng nghệ thuật ASCII để tạo cấu trúc kiểu cây để hiển thị các quy trình. Hiển thị các quy trình được chia nhỏ và quy trình con dưới dạng con cháu của các quy trình mẹ thích hợp, sắp xếp cho phù hợp. Để ẩn "các nhánh" của cây, hãy sử dụng -H
thay cho --forest
.
10. Chuỗi quy trình hiển thị
ps -p 4041 -L
-L
cờ chuyển đổi trên màn hình phân luồng cho bất kỳ chức năng nào của ps. Nó hữu ích nhất khi theo dõi các chuỗi của một quy trình cụ thể.
11. Hiển thị tất cả các quá trình gốc
ps -f -U root -u root
Thực hiện tìm kiếm tất cả các quy trình đang chạy với các nhận dạng gốc thực sự và hiệu quả. Điều này hiển thị chúng ở định dạng thời lượng đầy đủ, nhờ vào -f
lá cờ. Bạn có thể kết hợp nó với -o
cờ để tùy chỉnh đầu ra.
Sử dụng lệnh kill để dừng quá trình
Khi bạn đã xác định được quy trình hoạt động sai, bạn có thể sử dụng lệnh kill để hủy quy trình đang chạy. Lệnh sẽ gửi một tín hiệu đến một quá trình kết thúc nó. Khi các chương trình của bạn bị đóng băng, hầu hết thời gian bạn cần phải giết chúng bằng -9
tùy chọn.
Đầu ra của ps là một chế độ xem tức thời. Không giống như htop
, Nó không tự động cập nhật. Điều này có nghĩa là bạn có thể phải chạy nó nhiều lần để có được bức tranh rõ ràng về quá trình nào đang hoạt động sai. Để có được cái nhìn cập nhật về các quy trình, bạn có thể thử một số lệnh khác cho hệ thống Linux.