Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách sử dụng lệnh ps trong Linux để tiêu diệt tiến trình

Cách sử dụng lệnh ps trong Linux để tiêu diệt tiến trình

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
Cách sử dụng lệnh ps trong Linux để tiêu diệt tiến 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
Cách sử dụng lệnh ps trong Linux để tiêu diệt tiến trình

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
Cách sử dụng lệnh ps trong Linux để tiêu diệt tiến trình

-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
Cách sử dụng lệnh ps trong Linux để tiêu diệt tiến trình

-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
Cách sử dụng lệnh ps trong Linux để tiêu diệt tiến trình

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.

Cách sử dụng lệnh ps trong Linux để tiêu diệt tiến trình

Đầ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.