2013-04-11 28 views
56

vụ tai nạn của tôi khi khởi động với cổ điển:Tìm PID của quá trình đó sử dụng một cổng trên Windows

java.rmi.server.ExportException: Listen failed on port: 9999 

Làm thế nào tôi có thể tìm ra quy trình để giết nó?

+0

Các giải pháp thay thế phức tạp khác tại đây: http://stackoverflow.com/questions/48198/how-can-you-find-out-which-process-is-listening-on-a-port-on-windows – Thomas

Trả lời

136

Chỉ cần mở một shell lệnh và gõ: (nói cổng của bạn là 123456)

netstat -a -n -o | find "123456" 

Bạn sẽ thấy mọi thứ bạn cần

Các tiêu đề là:

Proto Local Address   Foreign Address  State   PID 
TCP 0.0.0.0:37    0.0.0.0:0    LISTENING  1111 
+0

tại đây làm thế nào để tôi nhận được chỉ pid, vì nó trả về toàn bộ chi tiết –

+0

làm thế nào để có được hình thức PID duy nhất ở trên kết quả – Chinya

+5

hoặc, 'nestat -aon | findstr 123456' –

40

Tìm PID của quá trình sử dụng cổng trên Windows(ví dụ: cổng: "9999")
netstat -aon | find "9999"

-a Hiển thị tất cả các kết nối và cổng nghe.

-o Hiển thị ID quy trình sở hữu được liên kết với mỗi kết nối.

-n Hiển thị địa chỉ và số cổng ở dạng số.

đầu ra:
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776

Rồi Giết quá trình bằng cách PID taskkill /F /PID 15776

/F - Chỉ định để mạnh mẽ chấm dứt quá trình (es).

Lưu ý: Bạn có thể cần một phép thêm (chạy từ admin) để giết một số quy trình nhất định

+0

Tại sao không thoát netstat trừ khi bạn cho nó cờ n? –

4

Sau khi một số không quan trọng với một kịch bản tôi đến hành động này. Sao chép và lưu tệp đó vào tệp .bat:

FOR /F "usebackq tokens=5" %%i IN (`netstat -aon ^| find "3306"`) DO taskkill /F /PID %%i 

thay đổi 'tìm' 3306 "'trong số cổng cần được miễn phí. Sau đó chạy tệp dưới dạng quản trị viên. Nó sẽ giết chết tất cả các tiến trình đang chạy trên cổng

0

này Nếu bạn muốn làm điều này theo chương trình bạn có thể sử dụng một số tùy chọn cho bạn như sau trong một kịch bản PowerShell:

$processPID = $($(netstat -aon | findstr "9999")[0] -split '\s+')[-1] 
taskkill /f /pid $processPID 

Tuy nhiên; lưu ý rằng bạn càng chính xác kết quả PID càng chính xác. Nếu bạn biết máy chủ nào được yêu cầu, bạn có thể thu hẹp nó xuống rất nhiều. netstat -aon | findstr "0.0.0.0:9999" sẽ chỉ trả lại một ứng dụng và chắc chắn sẽ có một ứng dụng chính xác nhất. Chỉ tìm kiếm trên số cổng có thể cho các ngươi trở quá trình này chỉ diễn ra có 9999 trong nó, như thế này:

TCP 0.0.0.0:9999      0.0.0.0:0  LISTENING  15776 
UDP [fe80::81ad:9999:d955:c4ca%2]:1900 *:*        12331 

Các ứng cử viên có khả năng nhất thường kết thúc lên đầu tiên, nhưng nếu quá trình này đã kết thúc trước khi bạn chạy của bạn kịch bản bạn có thể kết thúc yp với PID 12331 thay vào đó và giết chết quá trình sai.

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