สิ่งที่คุณใช้เป็นทางเลือก“ fuser -v -n tcp” บน Mac OS X


10

คำสั่ง fuser บน Mac OS X นั้นค่อนข้างดั้งเดิมและไม่สามารถตรวจสอบกระบวนการที่กำลังฟังบนพอร์ตเฉพาะได้ ไม่มีใครรู้ว่าเป็นทางเลือกที่ดีหรือไม่? มันเพียงพอที่จะรู้ว่ากระบวนการใดที่ฟังพอร์ตนั้น


1
ลองsudo lsof -i -P
vcsjones

ฉันอยู่ภายใต้ความประทับใจที่ lsof` ทำงานเฉพาะเมื่องานเชื่อมต่อกับพอร์ตจริง นอกจากนี้หนึ่งจะต้องอย่างน้อยก็| grep portnoเช่นกันเพื่อให้ได้ผลลัพธ์ที่มีความหมาย
Martin

คำตอบ:


14

ดังที่ @ vcsjones กล่าวไว้ในความคิดเห็นlsofเป็นเครื่องมือสำหรับสิ่งนี้:

$ sudo lsof -i tcp:80
COMMAND PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
Safari  804 gordon   16u  IPv4 0x05a2cec8      0t0  TCP 192.168.6.3:50542->stackoverflow.com:http (ESTABLISHED)
httpd   874   root    3u  IPv6 0x05a2a940      0t0  TCP *:http (LISTEN)
httpd   878   _www    3u  IPv6 0x05a2a940      0t0  TCP *:http (LISTEN)

หากไม่มี-iจะแสดงไฟล์ที่เปิดอยู่ทั้งหมด เพียงแค่-iมันแสดงไฟล์เครือข่ายเท่านั้น หากคุณระบุบางสิ่งหลังจากที่-iคุณสามารถ จำกัด โดยใด ๆ หรือทั้งหมด: IPv4 / 6, TCP / UDP, ชื่อโฮสต์หรือ IP และหมายเลขพอร์ต / ชื่อบริการ


2
ในกรณีที่มีประโยชน์สำหรับคนอย่างฉันที่ต้องการฆ่ากระบวนการทั้งหมดโดยใช้พอร์ตที่กำหนด: lsof -i tcp:5000 | grep LISTEN | awk '{print $2}' | xargs killฆ่ากระบวนการทั้งหมดที่ฟังบนพอร์ต 5000
JeremyKun
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.