Bạn có thể viết một chương trình để theo dõi / Proc / net / tcp, với đầu ra trông như thế này:
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
Sau đó, bạn có thể liên kết các cổng đã mở với các nút, có thể liên quan trở lại các quy trình và mô tả tệp bằng cách thực hiện đọc liên kết trên các mô tả tệp được liệt kê cho mỗi quy trình:
obi-wan ~ # readlink /proc/28850/fd/3
socket:[4847458]
Xem ở đây rằng inode 4847458 tương ứng với ổ cắm tcp đầu tiên trong danh sách trên. Đầu ra của netstat -tapn xác minh điều này cho tôi (và nhớ lại rằng 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
Khi chương trình giám sát nhận thấy sự thay đổi trong / Proc / net / tcp, hãy phân tích dữ liệu và xác định xem sự thay đổi đó có phải là ổ cắm mới mở không. Sau đó, bạn có thể liệt kê tất cả các mô tả tệp cho từng quy trình được liệt kê trong / Proc, thực hiện đọc liên kết trên mỗi để tìm inode phù hợp. Khi bạn tìm thấy điều đó, bạn có quyền sở hữu, từ đó bạn có thể nhận được bất cứ điều gì khác mà bạn muốn, đặc biệt nếu bạn có quy trình kế toán.
Nếu bạn không cần thông báo của mình là tức thời, thì chương trình màn hình của bạn có thể sử dụng cuộc thăm dò chậm (có thể là khoảng thời gian 50ms hoặc 100ms hoặc thậm chí 1000ms).