2009-04-15 33 views

Trả lời

7

Giết quá trình đang lắng nghe cổng đang được đề cập đến. Tôi tin rằng netstat cho bạn thấy quá trình id.

+3

-anp netstat | grep cột cuối cùng đã trình – user1747935

0

Tôi nghĩ cách duy nhất là dừng quy trình đã mở cổng.

9

Lệnh "netstat --programs" sẽ cung cấp cho bạn thông tin quy trình, giả sử bạn là người chủ. Sau đó, bạn sẽ phải giết quá trình "vi phạm" mà cũng có thể khởi động lại chỉ để làm phiền bạn :-).

Bạn đang thực sự cố gắng đạt được điều gì ở đây? Các giải pháp sẽ thay đổi dựa trên các quy trình chứa các cổng đó.

160

Như những người khác đã nói, bạn sẽ phải tiêu diệt tất cả các tiến trình đang lắng nghe trên cổng đó. Cách dễ nhất để làm điều đó là sử dụng lệnh fuser (1). Ví dụ: để xem tất cả các quy trình nghe cho các yêu cầu http trên cổng 80 (chạy dưới dạng root hoặc sử dụng sudo):

# fuser 80/tcp 

Nếu bạn muốn giết chúng, hãy thêm tùy chọn -k.

+1

tôi thấy rằng việc gửi một yêu cầu đến cảng cũng làm sạch nó (i không có chuyên gia Linux mặc dù) –

+1

Để cài đặt fuser trên Debian: sudo apt-get install psmisc (http://bitflop.com/document/107) – Korneel

+1

Nó hoạt động, nhưng tôi cũng phải cài đặt psmisc trên CentOs 7 ('sudo yum cài đặt psmisc') –

2

Nếu bạn thực sự muốn hủy quá trình ngay lập tức, bạn gửi tín hiệu KILL thay vì tín hiệu TERM (sau đó yêu cầu dừng lại, tín hiệu đầu tiên sẽ có hiệu lực ngay lập tức mà không cần xóa). Thật dễ dàng để thực hiện:

kill -KILL <pid> 

Tuy nhiên, hãy lưu ý rằng tùy thuộc vào chương trình bạn đang dừng, trạng thái của chương trình có thể bị hỏng khi làm như vậy. Bạn thường chỉ muốn gửi tín hiệu KILL khi chấm dứt thông thường không hoạt động. Tôi tự hỏi vấn đề cơ bản là bạn cố gắng giải quyết và liệu việc giết chết có phải là giải pháp đúng hay không.

-12

Tắt máy tính luôn luôn giết chết quá trình cho tôi.

+0

tắt máy chủ là rar e. – waqas

+13

bạn có nhận được huy hiệu "hài hước nhất" không? – jplandrain

+0

Không cần tắt máy tính của bạn. –

12

Bạn có thể sử dụng tcpkill (một phần của gói dsniff) để giết các kết nối đó là trên cổng bạn cần:

sudo tcpkill -9 port PORT_NUMBER 
+0

Đây là phương pháp duy nhất làm việc cho tôi. – brousch

+5

điều này chỉ cần treo '$ sudo tcpkill -9 cổng 5432 tcpkill: nghe lxcbr0 [cổng 5432]' – Anentropic

40

Đối với một giết một cổng cụ thể trong Linux sử dụng dưới lệnh

sudo fuser -k Port_Number/tcp 

thay thế Port_Number bằng cổng bị chiếm đóng của bạn.

+1

Điều này thực sự giết chết quá trình mở cổng chứ không phải cổng. – vinayc

3

Trong loại thiết bị đầu cuối:

netstat -anp|grep "port_number"

Nó sẽ hiển thị các chi tiết cảng. Chuyển đến cột cuối cùng. Nó sẽ ở định dạng này.Ví dụ: - PID/java

sau đó thực hiện:

kill -9 PID. Worked on Centos5

+0

rõ ràng điều này không hoạt động nếu cột PID trống cho cổng – Anentropic

+1

... và điều đó xảy ra nếu bạn không có quyền xem quy trình ... thử 'sudo netstat' để thực sự thấy các PID :) – Anentropic

+0

không hoạt động trên mac –

Các vấn đề liên quan