คำตอบ:
อีกทางเลือกหนึ่งคือการใช้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 จะไม่แสดงข้อมูลกระบวนการใด ๆ ... ซึ่งเป็นคำถาม