如何持續監控連接到本機套接字的PID?

如何持續監控連接到本機套接字的PID?

一些本地行程正在連接和斷開到連接埠 1234 上的 127.0.0.1。

我想記錄與此連接埠(或伺服器進程)的所有連接。

我試過了

 ss -tpn | grep 1234 

它顯示一個列表,但隨後停止;它不會繼續記錄新連接,因此我無法捕獲套接字或所有者的 PID。

我可以使用什麼工具來發現連接和斷開套接字的PID?

答案1

有一個“監視”工具可以做到這一點,或者您可以
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
將程式碼附加到文件中並追蹤它。這可能會產生CPU使用率,但可能會幫助你找到你想要的東西。
Linux 監視指令

答案2

您可以使用兩種工具來監視connectLinux 上的 TCP 事件:

兩者之間的區別在於,前者提供了自訂輸出的選項(例如,按 PID 或連接埠號過濾),而後者是一個更簡單的工具,不提供花哨的選項。

對於您的用例,最簡單的選項是安裝 bcc 並運行:

tcpconnect.py -P 1234

如果您使用發行版的套件管理器安裝這些工具,請記住,某些發行版不會將它們放置tcpconnect/usr/bin其他位置,而是將它們放置在其他位置/usr/share。因此,如果找不到這些文件,請務必檢查您的發行版放置這些文件的位置。

答案3

雖然ss僅轉儲套接字統計訊息,並且您需要模擬連續轉儲(使用watchwhile循環),但netstat具有連續模式(-c)。

netstat -ntcp | grep '  127.0.0.1:1234'

請注意,如果您只需要捕獲客戶端 pid,則 127... 之前的兩個空格不是拼寫錯誤。
範例輸出:

$ netstat -ntcp | grep '  127.0.0.1:1234'
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc

答案4

watch -n 1 -d 'lsof -n -itcp:1234'

不是日誌記錄,而是強大的即時監控和亮點...

$ man watch

  • -n 1 - 每 1 秒
  • -d - 突出顯示差異

$ man lsof

  • -n - 不解析 ip 到域。
  • -itcp:1234 - 任何與 tcp 連接埠 1234 交互

相關內容