Dòng lệnh để xem cổng cụ thể


263

Có cách nào để kiểm tra trạng thái của một cổng cụ thể từ dòng lệnh Windows không? Tôi biết tôi có thể sử dụng netstat để kiểm tra tất cả các cổng nhưng netstat chậm và nhìn vào một cổng cụ thể có lẽ là không.


6
netstatchỉ chậm nếu bạn không sử dụng công -ntắc, điều đó có nghĩa là nó phải thực hiện nhiều tra cứu DNS.
Hầu tước Lorne

Câu trả lời:


282

Đây là giải pháp dễ dàng cho việc tìm kiếm cổng ...

Trong cmd:

netstat -na | find "8080"

Trong bash:

netstat -na | grep "8080"

Trong PowerShell:

netstat -na | Select-String "8080"

3
Làm thế nào để sử dụng lệnh này? Tôi muốn biết số cổng này có hoạt động hay không liên kết: - [link] (https: //.localhost: 9043 / ibm / console / login.do)
Mayur Ingle

8
Cũng đáng đề cập đến -ocờ (tức là -naoở đây) để bao gồm cả PID của quá trình sử dụng cổng.
Steve Chambers

104

Bạn có thể sử dụng netstatkết hợp với các -npcờ và một đường ống đến các lệnh findhoặc findstr.

Cách sử dụng cơ bản là như vậy:

netstat -np <protocol> | find "port #"

Vì vậy, ví dụ để kiểm tra cổng 80 trên TCP, bạn có thể thực hiện việc này: netstat -np TCP | find "80" Cuối cùng sẽ đưa ra loại đầu ra sau:

TCP    192.168.0.105:50466    64.34.119.101:80       ESTABLISHED
TCP    192.168.0.105:50496    64.34.119.101:80       ESTABLISHED

Như bạn có thể thấy, điều này chỉ hiển thị các kết nối trên cổng 80 cho giao thức TCP.


73

Tôi sử dụng:

netstat –aon | find "<port number>"

ở đây o đại diện cho ID quá trình. bây giờ bạn có thể làm bất cứ điều gì với ID tiến trình. Để chấm dứt quá trình, ví dụ, sử dụng:

taskkill /F /pid <process ID>

câu trả lời đơn giản và sắc nét, Cảm ơn
Mohit Singh

69

Khi tôi gặp vấn đề với WAMP apache, tôi sử dụng mã này để tìm chương trình nào đang sử dụng cổng 80.

netstat -o -n -a | findstr 0.0:80

nhập mô tả hình ảnh ở đây

3068 là PID, vì vậy tôi có thể tìm thấy nó từ trình quản lý tác vụ và dừng quá trình đó.


Rất đẹp, cảm ơn rất nhiều! Đặc biệt cho TCP tôi sử dụng như sau: netstat -o -nap TCP | findstr 0,0: 80
denyoha

20

Như đã lưu ý ở nơi khác: sử dụng netstat, với các công tắc thích hợp và sau đó lọc kết quả bằng find [str]

Cơ bản nhất:

netstat -an | find ":N"

hoặc là

netstat -a -n | find ":N"

Để tìm một cổng nước ngoài, bạn có thể sử dụng:

netstat -an | findstr ":N[^:]*$"

Để tìm một cổng cục bộ, bạn có thể sử dụng:

netstat -an | findstr ":N.*:[^:]*$"

Trong đó N là số cổng bạn quan tâm.

-n đảm bảo tất cả các cổng sẽ là số, tức là không được trả lại dưới dạng dịch sang tên dịch vụ.

-a sẽ đảm bảo bạn tìm kiếm tất cả các kết nối (TCP, UDP, lắng nghe ...)

Trong findchuỗi, bạn phải bao gồm dấu hai chấm, như vòng loại cổng, nếu không, số có thể khớp với địa chỉ địa phương hoặc địa chỉ nước ngoài.

Bạn có thể thu hẹp hơn nữa việc tìm kiếm bằng các công tắc netstat khác nếu cần ...

Đọc thêm (^ 0 ^)

netstat /?

find /?

findstr /?

9
netstat -a -n | find /c "10.240.199.9:8080"

nó sẽ cung cấp cho bạn số lượng ổ cắm hoạt động trên một cổng và IP cụ thể (số cổng máy chủ)


3
Điều này không hoạt động cho shell power windows trên windows 2012 R2 và nhận được kết quả làFIND: Parameter format not correct
Chaminda Bandara

6

Đối với người dùng Windows 8: Dấu nhắc mở, gõ netstat -an | tìm "số cổng của bạn" , nhập.

Nếu trả lời giống như LISTENING thì cổng đang được sử dụng, nếu không thì nó là miễn phí.


2

Để cải thiện phản hồi của @ EndUzr :

Để tìm cổng nước ngoài (IPv4 hoặc IPv6), bạn có thể sử dụng:

netstat -an | findstr /r /c:":N [^:]*$"

Để tìm một cổng cục bộ (IPv4 hoặc IPv6), bạn có thể sử dụng:

netstat -an | findstr /r /c:":N *[^ ]*:[^ ]* "

Trong đó N là số cổng bạn quan tâm. Công tắc "/ r" bảo nó xử lý nó dưới dạng regrec. Công tắc "/ c" cho phép findstr bao gồm khoảng trắng trong chuỗi tìm kiếm thay vì coi khoảng trắng là dấu phân cách chuỗi tìm kiếm. Không gian được thêm vào này ngăn các cổng dài hơn bị ngược đãi - ví dụ: ": 80" so với ": 8080" và các vấn đề khác về cổng.

Để liệt kê các kết nối từ xa đến máy chủ RDP cục bộ, ví dụ:

netstat -an | findstr /r /c:":3389 *[^ ]*:[^ ]*"

Hoặc để xem ai đang chạm vào DNS của bạn:

netstat -an | findstr /r /c:":53 *[^ ]*:[^ ]*"

Nếu bạn muốn loại trừ các cổng chỉ cục bộ, bạn có thể sử dụng một loạt các trường hợp ngoại lệ với "/ v" và thoát các ký tự có dấu gạch chéo ngược:

netstat -an | findstr /v "0.0.0.0 127.0.0.1 \[::\] \[::1\] \*\:\*" | findstr /r /c:":80 *[^ ]*:[^ ]*"

1

Đối với cổng 80, lệnh sẽ là: netstat -an | tìm "80" Đối với cổng n, lệnh sẽ là: netstat -an | tìm "n"

Ở đây, netstat là hướng dẫn cho máy của bạn

-a: Hiển thị tất cả các kết nối và cổng nghe -n: Hiển thị tất cả địa chỉ và hướng dẫn ở định dạng số (Điều này là bắt buộc vì đầu ra từ -a có thể chứa tên máy)

Sau đó, một lệnh find để "Khớp mẫu" đầu ra của lệnh trước đó.


0

Điều này sẽ giúp bạn

netstat -atn | grep <port no>          # For tcp
netstat -aun | grep <port no>           # For udp
netstat -atun | grep <port no>          # For both

0

Trong RHEL 7, tôi sử dụng lệnh này để lọc một số cổng ở trạng thái LISTEN:

sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'

-1

Lệnh này sẽ hiển thị tất cả các cổng và địa chỉ đích của chúng:

netstat -f 

1
Yêu cầu là tìm hiểu xem một cổng cụ thể đang được sử dụng.
Ro Yo Mi

-5

Sử dụng lệnh lsof "lsof -i tcp: port #", đây là một ví dụ.

$ lsof -i tcp:1555 
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    27330 john  121u  IPv4 36028819      0t0  TCP 10.10.10.1:58615->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  201u  IPv4 36018833      0t0  TCP 10.10.10.1:58586->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  264u  IPv4 36020018      0t0  TCP 10.10.10.1:58598->10.10.10.10:livelan (ESTABLISHED)
java    27330 john  312u  IPv4 36058194      0t0  TCP 10.10.10.1:58826->10.10.10.10:livelan (ESTABLISHED)

4
Điểm trừ vì đây không phải là lệnh windows. Nếu nó có sẵn trên windows thì không có cuộc thảo luận nào về cách mua nó.
Ro Yo Mi

1
Không trả lời câu hỏi của OP. -1.
FractalSpace
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.