Câu hỏi Làm thế nào bạn có thể tìm ra quy trình nào đang lắng nghe trên một cổng trên Windows?


Làm thế nào bạn có thể tìm ra quy trình nào đang lắng nghe trên một cổng trên Windows?


1493
2017-09-07 06:26


gốc


Rất nhiều câu trả lời, thậm chí không một câu trả lời cho câu hỏi lập trình này. - arnt


Các câu trả lời:


C:\> netstat -a -b

(thêm vào -n để ngăn nó cố gắng phân giải tên máy chủ, điều này sẽ làm cho nó nhanh hơn rất nhiều)

Lưu ý đề xuất của Dane cho TCPView. Trông rất hữu ích!

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

-b  Hiển thị tệp thực thi có liên quan đến việc tạo mỗi kết nối hoặc         cổng nghe. Trong một số trường hợp, máy chủ lưu trữ thực thi nổi tiếng         nhiều thành phần độc lập và trong những trường hợp này,         chuỗi các thành phần liên quan đến việc tạo kết nối         hoặc cổng nghe được hiển thị. Trong trường hợp này, tệp thực thi         tên là [] ở phía dưới, trên cùng là thành phần được gọi,         và vân vân cho đến khi đạt được TCP / IP. Lưu ý rằng tùy chọn này         có thể tốn thời gian và sẽ thất bại trừ khi bạn có đủ         quyền.

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

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


1673
2017-09-07 06:28



-o để lấy PID - Laurent K
và taskkill / PID <pid> để chấm dứt quá trình, sử dụng / F nếu thích hợp. - BitMask777
Bạn có thể phải chạy shell dòng lệnh của bạn với tư cách quản trị viên, nếu không bạn có thể nhận được thông báo lỗi về các đặc quyền không đủ. Sử dụng tùy chọn "Chạy với tư cách quản trị viên" khi nhấp chuột phải vào cmd.exe. - Gruber
Hoạt động nhưng yêu cầu sự cho phép cao. Shift + nhấp chuột phải vào biểu tượng lệnh -> chạy với tư cách quản trị viên - Christian Bongiorno
Có được PID - giả sử nó 1234 - sau đó bạn có thể sử dụng tasklist /fi "pid eq 1234" để tìm hiểu tên và các chi tiết khác của quy trình. - Steve Chambers


Có một GUI gốc cho Windows:

  • Bắt đầu >> Tất cả chương trình >> Phụ kiện >> Công cụ hệ thống >> Màn hình tài nguyên

hoặc là Chạy  resmon.exe, hoặc từ Quản lý công việc tab hiệu suất

enter image description here


1615
2018-05-18 05:02



Cũng hiển thị trạng thái tường lửa của liên kết (cột cuối cùng). Rất tiện dụng. - Raphael
@data, Vấn đề duy nhất là giao diện người dùng cho chương trình này là khủng khiếp nghiêm trọng. - Pacerier
Bạn cần phải là một quản trị viên (hoặc trong nhóm đó) để chạy điều này. - KrishPrabakar
Cũng có thể được khởi chạy từ tab Hiệu suất của Trình quản lý Tác vụ, ít nhất trong Windows 10. (Chưa kiểm tra các phiên bản khác.) - Mathieu K.
Nhận xét của @ user4836454 ở trên KHÔNG đúng: Resource Monitor DOES hiển thị cổng với người nghe, ngay cả khi không có kết nối mạng với các cổng này. Chỉ cần nhìn vào phần "Listening Ports" thay vì phần "TCP Connections". - Jpsy


Sử dụng TCPView nếu bạn muốn có một GUI cho việc này. Đó là ứng dụng Sysinternals cũ mà Microsoft đã mua.


176
2017-09-07 06:38



Đây là tùy chọn tốt nhất của tôi, đặc biệt là vì tất cả các quy trình đều nằm trong cùng một danh sách và bạn có thể đóng các quy trình trực tiếp bằng cách nhấp chuột phải vào các quy trình đó. - Andreas Lundgren
Ngoài ra, điều này không yêu cầu quản trị viên tư nhân! - Janac Meena


netstat -aon | find /i "listening"

127
2017-09-07 06:32



Tôi chỉ cố gắng này và nó không hiển thị bất kỳ thông tin quá trình. - J c
"không hiển thị bất kỳ thông tin quá trình" huh? nó hiển thị các id quá trình của tất cả các quá trình lắng nghe. Nếu bạn cần Tên của quá trình, sử dụng giải pháp của Brad - aku
Của tôi xấu, không thấy PID như tôi đang tìm kiếm tên quá trình. - J c
@aku: bạn có thể vui lòng xem stackoverflow.com/questions/23468107/… - Moby04
1 Nhưng hãy nhớ, nếu các cửa sổ của bạn chạy bằng ngôn ngữ khác ngoài tiếng Anh, bạn sẽ phải thay đổi "nghe" thành từ gốc. Ví dụ. netstat -aon | find /i "abhören" cho tiếng Đức. - Levit


Bạn có thể nhận thêm thông tin nếu bạn chạy lệnh sau:

netstat -aon |find /i "listening" |find "port"

sử dụng lệnh 'Tìm' cho phép bạn lọc kết quả. find / i "listening" sẽ chỉ hiển thị các cổng 'Nghe'. Lưu ý, bạn cần / i để bỏ qua trường hợp nếu không bạn sẽ gõ tìm "LISTENING". | tìm "cổng" sẽ giới hạn kết quả chỉ cho những kết quả chứa số cổng cụ thể. Lưu ý, về điều này nó cũng sẽ lọc trong kết quả có số cổng bất cứ nơi nào trong chuỗi phản ứng.


61
2017-10-08 18:56



FWIW cố gắng để chạy điều này trong PowerShell v2.0 sản lượng lỗi FIND: Parameter format not correct. Bạn cần thêm dấu cách sau tiêu chí tìm. Điều này sẽ để lại cho bạn netstat -aon | find /i "listening" | find "1234 ". - self.
Thay thế "cổng" ở trên bằng cổng của bạn, ví dụ: "5000" - joey
@self. Tôi vẫn nhận được lỗi đó với PS 5.1, ngay cả sau khi thêm khoảng trống sau đường ống. Bạn có biết chuyện gì đang xảy ra không? - Nicke Manarin
@NickeManarinin & @self hoặc là đầu tiên thay đổi từ powershell thành cmd (chỉ cần gõ cmd và nhấn enter rồi làm lại lệnh) hoặc trong PowerShell sử dụng lệnh này thay vào đó: netstat -aon | find / i "{back tick}"nghe{back tick}"" | tìm "{back tick}"Hải cảng{back tick}"" (<- lưu ý các dấu ngoặc kép thoát - lý do thuật ngữ back tick vì tôi không thể thêm các ký tự thực tế vì nó nghĩ rằng nó là một snipping) - Tristan van Dam


  1. Mở cửa sổ nhắc lệnh (với tư cách quản trị viên) Từ "Start \ Search box" Nhập "cmd", sau đó nhấp chuột phải vào "cmd.exe" và chọn "Run as Administrator"

  2. Nhập văn bản sau rồi nhấn Enter.

    netstat -abno

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

    -b          Hiển thị tệp thực thi có liên quan đến việc tạo mỗi kết nối hoặc             cổng nghe. Trong một số trường hợp, máy chủ lưu trữ thực thi nổi tiếng             nhiều thành phần độc lập và trong những trường hợp này,             chuỗi các thành phần liên quan đến việc tạo kết nối             hoặc cổng nghe được hiển thị. Trong trường hợp này, tệp thực thi             tên là [] ở phía dưới, trên cùng là thành phần được gọi,             và vân vân cho đến khi đạt được TCP / IP. Lưu ý rằng tùy chọn này             có thể tốn thời gian và sẽ thất bại trừ khi bạn có đủ             quyền.

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

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

  3. Tìm Cổng mà bạn đang nghe trong "Địa chỉ cục bộ"

  4. Nhìn vào tên quy trình ngay dưới đó.

LƯU Ý: Để tìm quy trình trong Trình quản lý tác vụ

  1. Lưu ý PID (bộ định danh quá trình) bên cạnh cổng bạn đang xem.

  2. Mở Trình quản lý tác vụ Windows.

  3. Chọn tab Processes.

  4. Hãy tìm PID bạn đã lưu ý khi thực hiện netstat ở bước 1.

    • Nếu bạn không thấy cột PID, hãy nhấp vào Xem / Chọn Cột. Chọn PID.

    • Đảm bảo chọn "Hiển thị quy trình từ tất cả người dùng".


59
2017-11-08 01:49





Nhận PID và tên hình ảnh

Chỉ sử dụng một lệnh:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"

Ở đâu 9000 nên được thay thế bằng số cổng của bạn.

Các đầu ra sẽ chứa một cái gì đó như thế này:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
java.exe                      5312 Services                   0    130,768 K

Giải trình:

  • nó lặp qua tất cả các dòng từ đầu ra của lệnh sau:

    netstat -aon | findstr 9000
    
  • từ mọi dòng, PID (%a - tên không quan trọng ở đây) được trích xuất (PID là 5th trong dòng đó) và chuyển đến lệnh sau

    tasklist /FI "PID eq 5312"
    

Nếu bạn muốn bỏ qua các tiêu đề và sự trở lại của dấu nhắc lệnh, bạn có thể dùng:

echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on

Đầu ra:

java.exe                      5312 Services                   0    130,768 K

42
2018-02-10 10:17



Đã đồng ý! Đây là câu trả lời duy nhất lọc theo cổng và không yêu cầu đặc quyền nâng cao trên máy của bạn. Câu trả lời hay nhất! - Koshera
Giải pháp thực sự hữu ích - Tayab Hussain


Trước tiên, chúng tôi tìm thấy quá trình id của nhiệm vụ cụ thể mà chúng ta cần phải loại bỏ để có được cổng miễn phí

kiểu
netstat -n -a -o

Sau khi thực hiện lệnh này trong cửa sổ dòng nhắc lệnh (cmd) chọn pid mà tôi nghĩ cột cuối cùng giả sử đây là 3312

Bây giờ hãy nhập

taskkill / F / PID 3312

Bây giờ bạn có thể kiểm tra chéo bằng cách gõ lệnh netstat.

LƯU Ý: đôi khi các cửa sổ không cho phép bạn chạy lệnh này trực tiếp trên CMD vì vậy trước tiên bạn cần phải thực hiện các bước này từ start-> command prompt (nhấp chuột phải vào dấu nhắc lệnh và chạy với tư cách quản trị viên)


36
2017-08-23 15:25