Cách tắt tiến trình Linux bằng số cổng


Bạn đã bao giờ gặp phải tình huống cần dừng một tiến trình đang chạy trên một cổng cụ thể trên máy Linux của mình chưa?

Bạn có thể lo lắng rằng ứng dụng bạn đang chạy đang hoạt động sai hoặc ngốn tài nguyên mạng hoặc nguồn CPU cục bộ của bạn. Một ứng dụng như vậy thậm chí có thể là mối đe dọa bảo mật mà bạn muốn loại bỏ.

Dù lý do là gì, bạn có thể sử dụng các lệnh fuser,lsofnetstattừ thiết bị đầu cuối (cùng với kill) để giúp bạn tìm và tiêu diệt mọi quy trình Linux bằng số cổng. Các lệnh này sẽ hoạt động trên hầu hết các hệ điều hành Linux, bao gồm cả Ubuntu.

Cách hủy tiến trình Linux bằng lệnh bộ nhiệt áp

Một trong những cách dễ dàng nhất để kết thúc một tiến trình sử dụng số cổng là sử dụng lệnh fuser. Lệnh thiết bị đầu cuối Linux này có thể liệt kê hoặc hủy các tiến trình truy cập vào tệp hoặc ổ cắm. Nếu một ứng dụng chạy với hoạt động mạng (và do đó sử dụng cổng mở), thì có thể ứng dụng đó đang thực hiện một trong hai điều sau.

Trước khi tiếp tục, bạn cần đảm bảo rằng bạn cảm thấy thoải mái khi sử dụng thiết bị đầu cuối dòng lệnh trên PC Linux của mình.

Để liệt kê các quy trình đang sử dụng số cổng bằng fuser, bạn có thể sử dụng cú pháp sau:

fuser -n cổng giao thức

Trong ví dụ này, giao thứccó thể là tcphoặc udp, trong khi portlà số cổng bạn muốn để kiểm tra. Ví dụ: để xem tiến trình nào đang sử dụng cổng TCP 80, bạn có thể chạy:

fuser -n tcp 80

Thao tác này sẽ in ID tiến trình (PID) của các tiến trình sử dụng cổng đó.

Để tắt các tiến trình đó, bạn có thể thêm tùy chọn -kvào fuser. Điều này sẽ gửi tín hiệu SIGTERM đến từng quy trình, yêu cầu chúng kết thúc một cách nhẹ nhàng. Ví dụ:

fuser -k -n tcp 80

Điều này sẽ hủy tất cả các tiến trình sử dụng cổng TCP 80.

Nếu một số quy trình không phản hồi SIGTERM, bạn có thể sử dụng -KILLthay vì -k. Thao tác này sẽ gửi tín hiệu hủy (SIGKILL), tín hiệu này có thể giúp buộc các tiến trình hiện đang chạy mà bạn đã xác định phải chấm dứt ngay lập tức. Tuy nhiên, điều này có thể gây mất hoặc hỏng dữ liệu, vì vậy hãy sử dụng nó một cách thận trọng. Ví dụ:.

fuser -KILL -n tcp 80

Điều này sẽ giết chết tất cả các tiến trình sử dụng cổng TCP 80 một cách mạnh mẽ. Nếu bạn gặp bất kỳ sự cố nào, hãy chạy các lệnh này với tư cách là siêu người dùng (sử dụng lệnh sudo) hoặc bằng cách sử dụng người dùng root.

Cách hủy tiến trình Linux bằng lệnh lsof

Một cách khác để hủy tiến trình sử dụng số cổng trên PC Linux là sử dụng lệnhlsof. Lệnh này có thể liệt kê các tệp và ổ cắm đang mở trên hệ thống của bạn.

Để liệt kê các tiến trình đang sử dụng một số cổng cụ thể, bạn có thể sử dụng cú pháp sau:

lsof -i giao thức: cổng

Như trước đây, giao thứccó thể là tcphoặc udp, trong khi portlà số cổng bạn muốn kiểm tra. Ví dụ: để xem quy trình nào đang sử dụng cổng TCP 53 (thường được sử dụng cho các yêu cầu DNS), bạn có thể chạy lệnh này:

lsof -i tcp:53

Thao tác này sẽ in một số thông tin về từng quy trình sử dụng cổng đó, bao gồm cả PID của nó.

Để hủy các tiến trình đó, bạn có thể sử dụng tùy chọn-tvớilsof. Điều này sẽ chỉ in PID của các quy trình mà không có bất kỳ thông tin nào khác. Sau đó, bạn có thể chuyển đầu ra này sang lệnh killbằng bất kỳ tùy chọn tín hiệu nào. Ví dụ:

giết $(lsof -t -i tcp:53)

Điều này sẽ gửi tín hiệu SIGTERM (mặc định) tới tất cả các quy trình sử dụng cổng TCP 53.

Nếu một số quy trình không phản hồi tín hiệu SIGTERM như trước, bạn có thể sử dụng -9thay vì không dùng gì sau kill. Điều này sẽ gửi tín hiệu SIGKILL như trước, buộc chúng phải chấm dứt ngay lập tức nhưng cũng có thể gây mất hoặc hỏng dữ liệu. Ví dụ:

kill -9 $(lsof -t -i tcp:53)

Điều này sẽ gửi tín hiệu SIGKILL một cách cưỡng bức (mặc định) tới tất cả các quy trình sử dụng cổng TCP 53.

Cách hủy tiến trình Linux bằng lệnh netstat

Bạn cũng có thể sử dụng lệnh netstatđể theo dõi các tiến trình đang chạy trên PC Linux của mình bằng cách sử dụng các cổng mạng mở và đang hoạt động. netstat cho phép bạn xem các kết nối mạng và số liệu thống kê trên hệ thống của mình, cho phép bạn xác định các quy trình có vấn đề.

Để liệt kê các quy trình sử dụng số cổng cùng với PID của chúng, bạn cần thêm hai tùy chọn: -p, hiển thị PID và -l, hiển thị chỉ có ổ cắm nghe..

Bạn cũng cần chỉ định giao thức (tcp, udp, v.v.) và tùy ý lọc theo trạng thái (LISTEN, v.v.). Ví dụ: để xem quy trình TCP nào đang lắng nghe trên bất kỳ cổng nào, bạn có thể chạy:

netstat -p tcp -l

Thao tác này sẽ in thông tin về từng cổng TCP đang nghe trên bất kỳ cổng nào, bao gồm cả cổng PID của cổng đó.

Để lọc theo cổng cụ thể, bạn phải thêm tùy chọn khác: -n, hiển thị địa chỉ số thay vì tên. Bạn cũng cần chỉ định định dạng địa chỉ chính xác: [protocol][@hostname|hostaddr][:service|port].

Ví dụ: để xem tiến trình TCP nào đang nghe trên cổng 80, bạn có thể chạy:

netstat -p tcp -l -n 80

Thao tác này sẽ in thông tin về từng ổ cắm TCP đang nghe trên cổng 8080, bao gồm cả PID của nó.

Để hủy các tiến trình đó, bạn có thể sử dụng lệnh killvới bất kỳ tùy chọn tín hiệu nào bạn muốn và các PID bạn thu được từ netstat. Ví dụ:

giết 1234 5678

Điều này sẽ gửi tín hiệu SIGTERM (mặc định) đến các quy trình có PID 12345678.

Nếu một số quy trình không phản hồi tín hiệu SIGTERM như trước, bạn có thể sử dụng -9thay vì không dùng gì sau kill. Điều này sẽ gửi tín hiệu SIGKILL như trước, buộc chúng phải chấm dứt ngay lập tức nhưng có thể gây mất hoặc hỏng dữ liệu như trước. Ví dụ:

giết -9 1234 5678

Điều này sẽ gửi tín hiệu SIGKILL đến các quy trình có PID 12345678một cách mạnh mẽ chẳng hạn. Thay thế 1234bằng PID chính xác cho quy trình đang chạy của bạn.

Kiểm soát các ứng dụng Linux của bạn

Nhờ các bước được nêu ở trên, bạn có thể nhanh chóng kết thúc một tiến trình Linux đang chạy bằng cách sử dụng số cổng bằng dòng lệnh Linux. Hãy nhớ thận trọng khi tắt các tiến trình, đặc biệt là với tín hiệu SIGKILL, vì chúng có thể gây ra tác dụng phụ không mong muốn—rốt cuộc thì bạn không muốn gây ra sự mất ổn định cho hệ thống.

Bạn muốn xem xét kỹ hơn hiệu suất hệ thống của mình trên Linux? Bạn có thể muốn kiểm tra mức sử dụng bộ nhớ của bạn trên Linux tiếp theo. Nếu lo lắng về nguy cơ bảo mật tiềm ẩn, bạn cũng có thể muốn thay đổi mật khẩu của bạn trên Linux.

Bạn cần chuyển sang bản phân phối Linux mới? Nếu bạn là người mới bắt đầu, xem xét Linux Mint một giải pháp thay thế an toàn và ổn định..

.

bài viết liên quan:


2.04.2023