Để tiêu diệt một quy trình Linux, bạn cần ID hoặc tên của nó. Nếu tất cả những gì bạn biết là cổng mà nó sử dụng, bạn vẫn có thể giết nó? Vâng, theo nhiều cách khác nhau.
Quá trình giết chết
Thỉnh thoảng a Quá trình Linux có thể trở nên không phản hồi. Nó có thể ngừng hoạt động chính xác hoặc nó có thể tiếp tục hoạt động nhưng bỏ qua các yêu cầu để nó tắt hoặc bắt đầu ngấu nghiến bộ nhớ, CPU hoặc băng thông mạng.
Dù động cơ của bạn là gì, có nhiều cách để tiêu diệt một quá trình từ dòng lệnh Linux. Phương pháp cổ điển là sử dụng
lệnh tiêu diệt id quy trình
của quá trình bạn muốn chấm dứt. Các
giết
Lệnh có một số người thân gần gũi. Các
pkill
lệnh sẽ giết một quy trình theo tên, và
Killall
sẽ giết tất cả các quá trình mà nó có thể tìm thấy một phần của một cái tên.
Nếu tất cả những gì bạn biết về một quy trình là nó đang sử dụng một cổng trên máy tính của bạn, vẫn có nhiều cách để xác định và tiêu diệt nó. Theo thuật ngữ kết nối mạng, "cổng" có thể có nghĩa là một kết nối vật lý mà bạn chèn một cáp có phích cắm vào cuối, chẳng hạn như CAT5 hoặc 6 Mạng dẫn đầu , hoặc nó có thể có nghĩa là một cổng phần mềm.
Cổng phần mềm là phần cuối cùng của kết nối mạng. Các địa chỉ IP của một thiết bị xác định máy tính hoặc thiết bị mạng khác. Các ứng dụng bên trong máy tính sử dụng các cổng khác nhau. Chúng cung cấp một mức độ hạt khác. Lưu lượng truy cập mạng đã đến đúng máy tính bằng địa chỉ IP và bằng cách sử dụng địa chỉ cổng, nó có thể được gửi đến đúng ứng dụng.
Nó giống như thư bưu điện đến một khách sạn, sau đó được sắp xếp và chuyển đến các phòng thích hợp. Địa chỉ IP giống như địa chỉ đường phố của khách sạn và số phòng giống như số cổng.
Nếu bạn thấy hoạt động mạng trên một cổng và bạn không nhận ra quá trình tạo ra nó hoặc hành vi của nó là có vấn đề hoặc đáng ngờ, bạn có thể muốn muốn giết quá trình này. Ngay cả khi tất cả những gì bạn biết là số cổng, bạn có thể theo dõi quy trình và tiêu diệt nó.
Tạo kết nối với Socat
Để chúng tôi có một số kết nối để giết, chúng tôi sẽ sử dụng
Socat
Để tạo kết nối mạng bằng các giao thức khác nhau. Bạn cần phải cài đặt
Socat
. Để cài đặt nó trên Ubuntu, hãy sử dụng lệnh này:
Cú pháp cho
Socat
là đơn giản nếu một chút dài dòng. Chúng tôi cần cung cấp các địa chỉ nguồn và đích. Đối với mỗi trong số này, chúng tôi cần cung cấp giao thức, địa chỉ IP và số cổng. Chúng tôi có thể thay thế stdin hoặc stdout như một nguồn hoặc điểm đến.
Lệnh này tạo ra kết nối giữa ổ cắm nghe TCP trên cổng 7889, trên địa chỉ IP loopback là 127.0.0.1 và stdout. Ampersand ”
& amp;
"
Chạy lệnh trong nền
, để chúng tôi giữ quyền truy cập vào dòng lệnh.
Chúng tôi sẽ tạo thêm hai kết nối để chúng tôi có một lựa chọn nhỏ các ổ cắm bằng các giao thức khác nhau. Chúng tôi sẽ tạo ra a Kết nối UDP và một Kết nối SCTP . Phần duy nhất của lệnh thay đổi là giao thức.
Sử dụng tiêu diệt
Tất nhiên, chúng tôi có thể sử dụng
giết
Để chấm dứt quá trình, miễn là chúng ta biết ID của quá trình là gì. Để tìm PID, chúng ta có thể sử dụng
các
LSOF
yêu cầu
.
Để liệt kê các chi tiết của quy trình trên cổng 7889 đang sử dụng giao thức TCP, chúng tôi sử dụng
-Tôi
(Địa chỉ Internet) Tùy chọn, như thế này.
PID của quá trình này là 3141 và chúng ta có thể tiếp tục và sử dụng nó với
giết
:
Chúng ta có thể tự cứu mình một số nỗ lực nếu chúng ta sử dụng đường ống. Nếu chúng ta đi bộ đầu ra của
LSOF
vào trong
awk
Và
kể
awk
Để tìm kiếm các dòng có chứa cổng mà chúng tôi quan tâm đến trên 7889 và in trường thứ hai từ dòng đó, chúng tôi sẽ cô lập PID.
Sau đó chúng ta có thể ống đầu ra từ
awk
vào
giết
lệnh sử dụng
Xargs
. Các
Xargs
lệnh lấy đầu vào đường ống của nó và chuyển nó sang lệnh khác
như các tham số dòng lệnh
. Chúng tôi sẽ sử dụng
Xargs
với
giết
yêu cầu.
Chúng tôi không nhận được bất kỳ phản hồi trực quan. Theo cách điển hình của Linux, không có tin tức là tin tốt. Nếu bạn muốn kiểm tra xem quá trình đã bị chấm dứt, bạn có thể sử dụng
LSOF
một lần nữa.
Bởi vì
LSOF
Không báo cáo bất cứ điều gì, chúng tôi biết ở đó không có kết nối như vậy.
Chúng tôi có thể loại bỏ một quy trình bằng giao thức UDP chỉ bằng cách thay thế TCP TCP bằng cách sử dụng UDP, trong lệnh trước đó của chúng tôi.
Chúng ta có thể sử dụng
các
ss
yêu cầu
Để làm việc đó. Chúng tôi sử dụng
-S
(SCTP) tùy chọn để tìm kiếm ổ cắm SCTP,
-Một
(tất cả) tùy chọn để tìm kiếm tất cả các loại ổ cắm (nghe, chấp nhận, kết nối, v.v.) và
-P
(Quy trình) Tùy chọn để liệt kê các chi tiết của quy trình bằng cách sử dụng ổ cắm.
Chúng ta có thể phân tích cú pháp đầu ra đó bằng cách sử dụng
grep
Và
awk
. Chúng tôi cũng có thể phân tích nó bằng cách sử dụng
grep
Và một số perl regexes, nhưng cách này dễ hiểu hơn nhiều. Nếu bạn định sử dụng điều này nhiều hơn một hoặc hai lần, bạn có thể tạo ra một
Bí danh hoặc hàm vỏ
ra khỏi nó.
Chúng tôi sẽ cung cấp đầu ra từ
ss
vào trong
grep
và tìm kiếm số cổng của chúng tôi, 7889. Chúng tôi sẽ đặt đầu ra từ
grep
vào trong
awk
. TRONG
awk
, chúng tôi sử dụng
-F
(Chuỗi phân tách) tùy chọn để đặt dấu phẩy
Thì
Là một dấu phân cách trường. Chúng tôi tìm kiếm một chuỗi
chứa
PID PID =, và in trường phân loại dấu phẩy thứ hai từ chuỗi đó.
Chúng ta có thể
đường ống
điều đó vào
awk
Một lần nữa, đặt dấu phân cách trường thành dấu hiệu bình đẳng
=
"Và in trường thứ hai từ
cái đó
Chuỗi, sẽ là văn bản đằng sau dấu hiệu.
Bây giờ chúng tôi đã cách ly ID quy trình. Chúng ta có thể sử dụng
Xargs
để chuyển PID cho
giết
như một tham số dòng lệnh.
Điều đó giết chết quá trình sử dụng ổ cắm giao thức SCTP trên cổng 7889.
Lệnh fuser
Các
Fuser
Lệnh đơn giản hóa mọi thứ rất nhiều. Nhược điểm là, nó chỉ hoạt động với
TCP và UDP
ổ cắm. Về mặt tích cực, đó là hai loại ổ cắm phổ biến nhất mà bạn sẽ cần phải đối phó. Các
Fuser
Lệnh đã được cài đặt trên máy tính Ubuntu, Fedora và Manjaro mà chúng tôi đã kiểm tra.
Tất cả những gì bạn cần làm là sử dụng
-K
(KILL) Tùy chọn, và cung cấp cổng và giao thức. Bạn có thể sử dụng
-N
.
Số cổng, giao thức và PID của quá trình chấm dứt được in trong cửa sổ thiết bị đầu cuối.
Hãy thử Fuser trước
Nó có thể được cài đặt trên máy tính mà bạn đang làm việc và giao thức có thể là TCP hoặc UDP, do đó, có một cơ hội tuyệt vời, cách đơn giản nhất sẽ phù hợp với bạn.
- — OnePlus 11 ở đây, nhưng với một khởi đầu khó khăn
- — Cách chặn hoặc bỏ chặn ai đó trên tiktok
- — Airpods Pro có sự cạnh tranh mới: OnePlus Buds Pro 2
- — Microsoft Edge đang trò chuyện AI và một cái nhìn mới trên Windows
- — Tai nghe tốt nhất cho người hâm mộ iPhone chỉ đạt mức giá thấp nhất của họ
- — Microsoft đang biến Bing thành công cụ tìm kiếm AI