คำตอบ:
อีกทางเลือกหนึ่งคือการใช้lsof
ยูทิลิตี้; โดยเฉพาะlsof -i 4tcp
จะแสดงรายการกระบวนการทั้งหมดที่มีซ็อกเก็ตเครือข่าย TCP IPv4 บางประเภทเปิดอยู่ manpage of lsof
จะให้ข้อมูลโดยละเอียดเกี่ยวกับวิธีการใช้ยูทิลิตีและวิธีตีความผลลัพธ์
หากคุณสนใจพอร์ตเฉพาะคุณสามารถใช้ตัวอย่างนี้:
lsof -i 4tcp:8080 -sTCP:LISTEN
หากคุณต้องการรับรหัสกระบวนการเท่านั้นคุณสามารถเรียกใช้สิ่งนี้:
lsof -i 4tcp:8080 -sTCP:LISTEN -Fp
ฉันใช้คำสั่งด้านล่างเมื่อฉันต้องการเห็นทุกอย่างที่อยู่บนพอร์ตเฉพาะสำหรับ TCP หรือ UDP -n
พิการตัวเลือกความพยายามที่จะแก้ปัญหาที่อยู่ IP เข้าไปในชื่อโดเมนและ-P
ปิดการใช้งานพยายามที่จะคิดออกชื่อของพอร์ตโดยเฉพาะอย่างยิ่ง นอกจากนี้การรันroot
จะแสดงกระบวนการเพิ่มเติมมากกว่าการทำงานในฐานะผู้ใช้ปกติ
sudo lsof -iTCP:53 -iUDP:53 -n -P
ตัวอย่างโค้ดต่อไปนี้แสดงรายการเซิร์ฟเวอร์ TCP ที่ทำงานอยู่ทั้งหมดบนเครื่อง OSX ในพื้นที่ของคุณ:
netstat -a -Ptcp | egrep 'tcp4.*LISTEN'
tcp4 0 0 127.0.0.1.2022 *.* LISTEN 0 0
tcp4 0 0 *.3141 *.* LISTEN 0 0
LISTEN
แสดงเฉพาะซ็อกเก็ตที่รับฟังการเชื่อมต่อ นั่นคือเซิร์ฟเวอร์
แสดงให้เห็นว่าบรรทัดแรกเซิร์ฟเวอร์ผูกไว้กับlocalhost
อาคาพอร์ต127.0.0.1
2022
มันจะตอบคำขอในท้องถิ่น แต่ไม่ใช่คำขอทางอินเทอร์เน็ต
บรรทัดที่สองเป็นเซิร์ฟเวอร์ที่ถูกผูกไว้กับที่อยู่ทั้งหมดเช่นพอร์ต*
3141
มันจะตอบแบบสอบถามอินเทอร์เน็ต
ในการแสดงรายการพอร์ตที่ไคลเอ็นต์และเซิร์ฟเวอร์ใช้ให้ใช้ดังต่อไปนี้:
netstat -an -Ptcp | grep tcp4
สิ่งนี้ควรเป็นไปได้ในหน้าต่างเทอร์มินัลโดยใช้คำสั่งNetstat
และถ้าคุณชอบ GUI มากกว่านี้:
ด้วย Mac OS X 10.5 โฟลเดอร์ / Applications / Utilities มียูทิลิตีเครือข่ายชื่อ: Network Utility ดูที่แท็บ Netstat สำหรับสถิติเหล่านี้ที่แสดงในแอปพลิเคชั่น Gui พร้อมกับ Ping, Lookup, Traceroute, Whois, Finger และ Port Scan
netstat
ในโฮสต์ที่ใช้ BSD จะไม่แสดงข้อมูลกระบวนการใด ๆ ... ซึ่งเป็นคำถาม