Linux
如何跟踪命令的網路活動?
我想跟踪命令的網路活動,我嘗試了 tcpdump 和 strace 沒有成功。
例如,如果我正在安裝一個包或使用任何試圖訪問某個站點的命令,我想查看該網路活動(它試圖到達的站點)。
我想我們可以通過使用 tcpdump 來做到這一點。我試過了,但它正在跟踪我係統的所有網路活動。假設我執行多個與網路相關的命令,並且只想跟踪特定的命令網路活動,那麼很難找到確切的解決方案。
有沒有辦法做到這一點?
更新:
我不想跟踪網路介面上發生的所有事情。我只想跟踪命令(例如#yum install -y vim)網路活動。例如它試圖到達的站點。
netstat 為簡單起見
使用
netstat
和 grepping PID 或程序名稱:# netstat -np --inet | grep "thunderbird" tcp 0 0 192.168.134.142:45348 192.168.138.30:143 ESTABLISHED 16875/thunderbird tcp 0 0 192.168.134.142:58470 192.168.138.30:443 ESTABLISHED 16875/thunderbird
您可以
watch
用於動態更新:watch 'netstat -np --inet | grep "thunderbird"'
和:
-n
: 顯示數字地址而不是嘗試確定符號主機、埠或使用者名-p
:顯示每個socket所屬程序的PID和名稱。--inet
: 只顯示 raw、udp 和 tcp 協議套接字。冗長的 strace
您說您嘗試了該
strace
工具,但您是否嘗試過該選項trace=network
?請注意,輸出可能非常冗長,因此您可能需要一些 grepping。你可以從“sin_addr”開始。strace -f -e trace=network <your command> 2>&1 | grep sin_addr
或者,對於已經執行的程序,使用 PID:
strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr