คุณสามารถเขียนโปรแกรมเพื่อตรวจสอบ / proc / net / tcp ซึ่งผลลัพธ์เป็นดังนี้:
obi-wan ~ # cat /proc/net/tcp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:0050 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 4847458 1 e6060560 300 0 0 2 -1
1: 00000000:04D2 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 4847477 1 f2e64da0 300 0 0 2 -1
2: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 7109 1 f2e65ac0 300 0 0 2 -1
3: 0100007F:177A 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000 0 4864457 1 d2726540 300 0 0 2 -1
4: 00000000:01BB 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 4847462 1 e60609c0 300 0 0 2 -1
5: 6B00A8C0:0016 30F4B5CA:C3AB 01 00000044:00000000 01:00000031 00000000 0 0 4982752 3 f2e64940 55 4 0 2 -1
6: 0100007F:B143 0100007F:BC5E 01 00000000:00000000 00:00000000 00000000 1000 0 2130283 1 d59cce40 21 4 1 2 -1
7: 0100007F:BC5E 0100007F:B143 01 00000000:00000000 00:00000000 00000000 1000 0 2130285 1 d59cd2a0 21 4 0 2 -1
8: 6B00A8C0:0016 3276C35B:8E11 01 00000000:00000000 02:000ADAB1 00000000 0 0 4982629 2 d2727260 40 4 8 2 2
9: 6B00A8C0:0016 6500A8C0:DD5D 01 00000538:00000000 01:00000029 00000000 0 0 4864416 5 e6061b40 42 12 27 3 -1
จากนั้นคุณสามารถเชื่อมโยงพอร์ตที่เปิดอยู่กับ inodes ซึ่งสามารถสัมพันธ์กับกระบวนการและตัวอธิบายไฟล์โดยทำ readlink บนไฟล์ descriptor ที่แสดงรายการสำหรับแต่ละกระบวนการ:
obi-wan ~ # readlink /proc/28850/fd/3
socket:[4847458]
ดูที่นี่ที่ inode 4847458 สอดคล้องกับซ็อกเก็ต tcp แรกในรายการด้านบน ผลลัพธ์ของ netstat -tapn ตรวจสอบสิ่งนี้สำหรับฉัน (และจำได้ว่า 0x50 == 80):
obi-wan ~ # netstat -tapn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 28850/cherokee-work
เมื่อโปรแกรมมอนิเตอร์สังเกตเห็นการเปลี่ยนแปลงใน / proc / net / tcp ให้แยกวิเคราะห์ข้อมูลและพิจารณาว่าการเปลี่ยนแปลงนั้นเป็นซ็อกเก็ตที่เพิ่งเปิดใหม่หรือไม่ จากนั้นคุณสามารถระบุไฟล์ descriptors ทั้งหมดสำหรับแต่ละโพรเซสที่อยู่ใน / proc, ทำ readlink บนแต่ละตัวเพื่อค้นหา inode ที่ตรงกัน เมื่อคุณพบว่าคุณมี pid ที่เป็นเจ้าของซึ่งคุณสามารถได้รับสิ่งอื่นที่คุณอาจต้องการโดยเฉพาะอย่างยิ่งถ้าคุณมีกระบวนการบัญชี
หากคุณไม่ต้องการให้การแจ้งเตือนของคุณเป็นแบบทันทีโปรแกรมตรวจสอบของคุณอาจใช้แบบสำรวจความคิดเห็นช้า (อาจเป็นระยะเวลา 50ms หรือ 100ms หรือแม้กระทั่ง 1,000ms)