Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Phần Mềm

Kết thúc tiến trình Linux theo số cổng: Phương pháp nhanh và an toàn

Bạn có bao giờ gặp 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?

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

Dù lý do là gì, bạn có thể sử dụng các lệnh fuser, lsof và netstat từ terminal (cùng với kill) để giúp bạn tìm và kết thúc bất kỳ tiến trình Linux nào sử dụ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 Ubuntu.

Cách kết thúc tiến trình Linux bằng lệnh fuser

Một trong những cách dễ dàng nhất để kết thúc tiến trình sử dụng số cổng là sử dụng lệnh fuser. Lệnh terminal Linux này có thể liệt kê hoặc kết thúc các tiến trình truy cập tệp hoặc socket. Nếu một ứng dụng chạy với hoạt động mạng (và do đó sử dụng cổng mở), nó có thể đang làm một trong hai việc này.

Trước khi tiếp tục, bạn cần đảm bảo bạn thoải mái sử dụng dòng lệnh terminal trên máy Linux của mình.

Kết thúc tiến trình Linux theo số cổng: Phương pháp nhanh và an toàn

Để liệt kê các tiến 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 protocol port

Trong ví dụ này, protocol có thể là tcp hoặc udp, trong khi port là 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

Điều này sẽ in ra các ID tiến trình (PID) của các tiến trình đang sử dụng cổng đó.

Để kết thúc những tiến trình đó, bạn có thể thêm tùy chọn -k vào fuser. Điều này sẽ gửi tín hiệu SIGTERM đến mỗi tiến 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ẽ kết thúc tất cả các tiến trình sử dụng cổng TCP 80.

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

fuser -KILL -n tcp 80

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

Cách kết thúc tiến trình Linux bằng lệnh lsof

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

Kết thúc tiến trình Linux theo số cổng: Phương pháp nhanh và an toà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 protocol:port

Như trước, protocol có thể là tcp hoặc udp, trong khi port là 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 53 (thường dùng cho yêu cầu DNS), bạn có thể chạy lệnh này:

lsof -i tcp:53

Điều này sẽ in một số thông tin về mỗi tiến trình sử dụng cổng đó, bao gồm PID của nó.

Để kết thúc những tiến trình đó, bạn có thể sử dụng tùy chọn -t với lsof. Điều này sẽ chỉ in PID của các tiến trình mà không có bất kỳ thông tin khác nào. Sau đó, bạn có thể dẫn đầu ra (pipe) này đến lệnh kill với bất kỳ tùy chọn tín hiệu nào. Ví dụ:

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

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

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

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

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

Cách kết thúc 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 máy Linux của bạn sử dụng cổng mạng chủ động và mở. netstat cho phép bạn xem các kết nối mạng và thống kê trên hệ thống, cho phép bạn xác định các tiến trình gây sự cố.

Để liệt kê các tiến 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, chỉ hiển thị socket đang lắng nghe.

Bạn cũng cần chỉ định giao thức (tcp, udp, v.v.) và tùy chọn lọc theo trạng thái (LISTEN, v.v.). Ví dụ, để xem tiến 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

Điều này sẽ in thông tin về mỗi socket TCP đang lắng nghe trên bất kỳ cổng nào, bao gồm PID của nó.

Kết thúc tiến trình Linux theo số cổng: Phương pháp nhanh và an toàn

Để 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 lắng nghe trên cổng 80, bạn có thể chạy:

netstat -p tcp -l -n 80

Điều này sẽ in thông tin về mỗi socket TCP đang lắng nghe trên cổng 8080, bao gồm PID của nó.

Kết thúc tiến trình Linux theo số cổng: Phương pháp nhanh và an toàn

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

kill 1234 5678

Điều này sẽ gửi tín hiệu SIGTERM (mặc định) đến các tiến trình với PID 1234 và 5678.

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

kill -9 1234 5678

Điều này sẽ gửi tín hiệu SIGKILL đến các tiến trình với PID 1234 và 5678 một cách mạnh mẽ, ví dụ. Thay thế 1234 bằng PID đúng cho tiến trình đang chạy của bạn.

Kết thúc tiến trình Linux theo số cổng: Phương pháp nhanh và an toàn

Kiểm soát ứ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 tiến trình Linux đang chạy bằng số cổng sử dụng dòng lệnh Linux. Hãy nhớ sử dụng thận trọng khi kết thúc tiến trình, đặc biệt 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 — bạn không muốn gây ra sự không ổn định hệ thống.

Muốn xem kỹ hơn hiệu suất hệ thống trên Linux? Bạn có thể muốn kiểm tra việc sử dụng bộ nhớ trên Linux. Nếu bạn lo ngại về rủi ro bảo mật tiềm ẩn, bạn có thể muốn thay đổi mật khẩu trên Linux.

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, hãy cân nhắc Linux Mint như một lựa chọn an toàn và ổn định.