ฉันใช้แล็ปท็อป OS X Mountain Lion และมีกล่อง Vagrant สองกล่องอยู่ ฉันพยายามคิดว่ากระบวนการใดบ้างที่รับฟังพอร์ต 8080 การเปลี่ยนแปลงของฉันผลิตได้เหมือนร้อยบรรทัด แต่ไม่มีใครที่มีหมายเลขพอร์ตเฉพาะ ฉันถือว่าบางสิ่งเช่น:
netstat -XXX | grep 8080
ฉันใช้แล็ปท็อป OS X Mountain Lion และมีกล่อง Vagrant สองกล่องอยู่ ฉันพยายามคิดว่ากระบวนการใดบ้างที่รับฟังพอร์ต 8080 การเปลี่ยนแปลงของฉันผลิตได้เหมือนร้อยบรรทัด แต่ไม่มีใครที่มีหมายเลขพอร์ตเฉพาะ ฉันถือว่าบางสิ่งเช่น:
netstat -XXX | grep 8080
คำตอบ:
น่าเสียดายที่ OSX คุณติดกับ BSD netstat
ซึ่งจะไม่แสดง ID กระบวนการที่แนบมากับพอร์ตที่ระบุ lsof
สิ่งที่คุณต้องทำคือการใช้แทน ไวยากรณ์ที่คุณต้องใช้คือ:
lsof -i :8080
นี่จะพิมพ์ข้อมูลจำนวนมากซึ่งส่วนใหญ่คุณไม่สนใจ แต่ฟิลด์มีป้ายกำกับที่ดี ตัวอย่างเช่นตรวจสอบผลลัพธ์ตัวอย่างนี้
lsof -i :53237
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
GoogleTal 927 guest 29u IPv4 0x2c3f7f95244855c3 0t0 TCP localhost:53237 (LISTEN)
สิ่งนี้บอกฉันว่ามีการใช้พอร์ต 53237 โดยกระบวนการ ID 927 เมื่ออ่านฟิลด์คำสั่งโปรดจำไว้ว่าผลลัพธ์นี้ถูกตัดทอนในความเป็นจริงชื่อเต็มของไบนารีคือ GoogleTalkPlugin
VBoxHeadl
- มีวิธีใดบ้างที่จะดูว่าอินสแตนซ์ VirtualBox (มีสองตอนนี้) หรือฉันกำลังถามทางมากเกินไป ขอบคุณ
lsof -p PID
และเรียกดูรายการของไฟล์ที่เปิดจนกว่าคุณจะพบมัน
นี่คือสิ่งที่ฉันต้องการใช้เมื่อค้นหา PID ของพอร์ตการรับฟัง สำหรับ Linux ใช้:netstat -tunlp
ข้อมูลเพิ่มเติมสามารถพบได้ในหน้าคน
-p
ไม่แสดงรายการอาร์กิวเมนต์ของโปรแกรม ฉันจะดูสิ่งนี้ได้อย่างไร
-p
ใน OSX port
เป็น ฉันเกลียดการตัดสินใจที่นักพัฒนาที่จะทำให้ข้อโต้แย้งที่แตกต่างกันสำหรับ OSX และ Linux ...
ฉันอยู่ระหว่างการแก้ไขnetstat
บน OS X เพื่อให้คุณลักษณะนี้และสะดุดกับความจริงที่ว่า-v
จะให้ pid ที่เกี่ยวข้องกับซ็อกเก็ต
-v
เพิ่มระดับความฟุ่มเฟื่อยและเป็นเอกสาร developer.apple.com/library/mac/documentation/Darwin/Reference/…
สำหรับฉันสองบรรทัดต่อไปนี้ทำงานได้ดีที่สุดในการแสดงว่าแอพใดที่มีพอร์ตเปิดฟังอยู่และช่องสัญญาณ, lsof นั้นข้ามแพลตฟอร์มทั้งหมด:
netstat -Watn | grep LISTEN
lsof -Pnl +M -i -cmd | grep LISTEN
เพื่อหาพอร์ตเฉพาะใช้ด้านล่างคำสั่ง netstat
netstat -an | grep ':8080'
จากผู้ชาย netstat
-p, - โปรแกรมแสดง PID และชื่อของโปรแกรมที่แต่ละซ็อกเก็ตอยู่
ฉันมักจะทำสิ่งนี้: netstat -antup | grep 8080
-p protocol Show statistics about protocol, which is either a well-known name
-p
แสดง PID เป็นคำสั่ง GNU netstat ในขณะที่ OSX ใช้ BSD netstat
-p
ไม่แสดงรายการอาร์กิวเมนต์ของโปรแกรม ฉันจะดูสิ่งนี้ได้อย่างไร
-p
ใน OSX port
เป็น ฉันเกลียดการตัดสินใจที่นักพัฒนาที่จะทำให้ข้อโต้แย้งที่แตกต่างกันสำหรับ OSX และ Linux ...
คำสั่งด้านล่างแสดงการเชื่อมต่อ:
netstat -antop | grep :8080
สำหรับการดูโฟลว์ที่สมบูรณ์แบบเรียลไทม์คุณสามารถใช้watch
:
watch -d -t -n 1 'lsof -n -i :8080'