A. linux 怎麼查看歷史進程流量的
linux 怎麼查看歷史進程流量的
Linux查看網路流量
在GUI下面,有一大把的工具可以顯示網路流量,那麼,命令行下面怎麼辦?
顯然辦法是有的,比如,ifconfig,會有這樣的輸 出:
RX bytes:1224128649 (1.1 GiB) TX bytes:34114947 (32.5 MiB)
過 一會再看,數值有所變化,兩者的差值就是過去一段時間的流量。可是,這也太不人性化了……
正所謂自己動手,豐衣足食,我們自己來寫一個腳 本,實時顯示並刷新!
腳本如下,還是哪句話,本人功力有限,寫腳本的原則是夠用就好。
#!/bin/bash
if [ -n "$1" ]; then
eth_name=$1
else
eth_name="eth0"
fi
B. linux如何查看都有那些程序在訪問網路,並能看到程序的流量。求大家幫忙。。。
netstat -ano 可以看弊畢出埠所運行的服務 以及這個 埠對外的連接
在安裝一個iftop 可以精確的看到每個IP的流量
如果你機器上是跑磨卜搭WEB 你就用iftop看下 訪問進來的IP 然後去apache裡面的日誌分析下是訪問的哪個瞎拿文件
C. 在Linux下怎麼看網路流量
1. 使用 iptraf
iptraf是一個實時查看網路流量的文本屏幕界面工具。
如果系統沒有安裝
如果是 RHEL,那麼就去找安裝盤中的 iptraf*.rpm 包安裝;
如果是 CentOS,那麼用 yum install -y iptraf 進行安裝
iptraf是一個文本全屏幕界面,操作起來比較簡單明了。最好使用 putty 來看,SecureCRT可能顯示亂碼。
它提供了很多統計方式:
(1)IP traffic monitor
(2)General interface statistics
(3)Detailed interface statistics
如果跟上 -B 參數,還可以後台執行,把數據保存到文件中,位於 /var/log/iptraf 目錄。
2. sar
如果系統沒有安裝,
如果是 RHEL,那麼就去安裝盤中找 sysstat*.rpm 包安裝;
如果是 CentOS,那麼用 yum install -y sysstat 安裝。
sysstat是一個工具包,包含有幾個很有用的系統檢測程序,iostat,mpstat和sar.
Turbolinux的各個版本上,都包含這個工具包.
iostat用於輸出CPU,I/O系統和磁碟分區的統計信息.可以用來分析磁碟I/O,帶寬等信息.
mpstat用於輸出CPU的各種統計信息. 可以用來分析程序運行時在內核態和用戶態的工作情況.
sar用於定時搜集系統的各種狀態信息.然後可以對系統各個時間點的狀態進行監控.
sar有很多用途,如果要來監控網路流量,使用下面的命令行方式:
sar -n DEV interval count
其中,interval是統計時間間隔,以秒為單位;count是總共統計幾次,如果為0就不斷的統計直到 Ctrl+C 打斷,否則執行count次就退出。
比如:sar -n DEV 1 4
比如:sar -n DEV 10 0
IFACE:LAN介面
rxpck/s:每秒鍾接收的數據包
txpck/s:每秒鍾發送的數據包
rxbyt/s:每秒鍾接收的位元組數
txbyt/s:每秒鍾發送的位元組數
D. 查看linux網路流量及帶寬
在類Unix系統中可以使用top查看系統資源、進程、內存佔用等信息。查看網路狀態可以使用netstat、nmap等工具。若要查看實時的網路流量,監控TCP/IP連接等,則可以使用iftop。
iftop類似於top的實時流量監控工具,可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示埠信息等。
查看流量是從哪些埠發送出去的:
# iftop -P
-P 選項會在iftop 的輸出結果中開啟埠顯示
界面上面顯示的是類似刻度尺的刻度范圍,為顯示流量圖形的長條作標尺用的。
中間的<= =>這兩個左右箭頭,表示的是流量的方向。
TX:發送流量
RX:接收流量
TOTAL:總流量
Cumm:運行iftop到目前時間的總流量
peak:流量峰值
rates:分別表示過去 2s 10s 40s 的平均流量
要找到運行在該埠的進程,那麼可以用netstat 或者lsof 來找到相應的進程。
使用netstat 命令來找到運行在10910這個埠上的進程:
# netstat -tunp | grep 10910
可以使用lsof 命令來找到運行在10909這個埠上的進程:
# lsof -i:10909
查看進程PID為51919的應用程序:
# ps -ef |grep 51919
E. 如何在Linux下統計高速網路中的流量
Linux下統計高速網路流量方法如下:
在Linux中有很多的流量監控工具,它們可以監控、分類網路流量,以花哨的圖形用戶界面提供實時流量分析報告。大多數這些工具(例如:ntopng,iftop )都是基於libpcap 庫的,這個函數庫是用來截取流經網卡的數據包的,可在用戶空間用來監視分析網路流量。盡管這些工具功能齊全,然而基於libpcap庫的流量監控工具無法處理高速(Gb以上)的網路介面,原因是由於在用戶空間做數據包截取的系統開銷過高所致。
在本文中我們介紹一種簡單的Shell 腳本,它可以監控網路流量而且不依賴於緩慢的libpcap庫。這些腳本支持Gb以上規模的高速網路介面,如果你對「匯聚型」的網路流量感興趣的話,它們可統計每個網路介面上的流量。
腳本主要是基於sysfs虛擬文件系統,這是由內核用來將設備或驅動相關的信息輸出到用戶空間的一種機制。網路介面的相關分析數據會通過「/sys/class/net/<ethX>/statistics」輸出。
舉個例子,eth0的網口上分析報告會輸出到這些文件中:
/sys/class/net/eth0/statistics/rx_packets: 收到的數據包數據
/sys/class/net/eth0/statistics/tx_packets: 傳輸的數據包數量
/sys/class/net/eth0/statistics/rx_bytes: 接收的位元組數
/sys/class/net/eth0/statistics/tx_bytes: 傳輸的位元組數
/sys/class/net/eth0/statistics/rx_dropped: 收包時丟棄的數據包
/sys/class/net/eth0/statistics/tx_dropped: 發包時丟棄的數據包
這些數據會根據內核數據發生變更的時候自動刷新。因此,你可以編寫一系列的腳本進行分析並計算流量統計。下面就是這樣的腳本(感謝 joemiller 提供)。第一個腳本是統計每秒數據量,包含接收(RX)或發送(TX)。而後面的則是一個描述網路傳輸中的接收(RX)發送(TX)帶寬。這些腳本中安裝不需要任何的工具。
測量網口每秒數據包:
#!/bin/bash
INTERVAL="1" #update interval in seconds
if [ -z "$1" ]; then
echo
echousage: $0 [network-interface]
echo
echoe.g. $0 eth0
echo
echoshows packets-per-second
exit
fi
IF=$1
while true
do
R1=`cat/sys/class/net/$1/statistics/rx_packets`
T1=`cat/sys/class/net/$1/statistics/tx_packets`
sleep$INTERVAL
R2=`cat/sys/class/net/$1/statistics/rx_packets`
T2=`cat/sys/class/net/$1/statistics/tx_packets`
TXPPS=`expr$T2 - $T1`
RXPPS=`expr$R2 - $R1`
echo"TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s"
done
網路帶寬測量
#!/bin/bash
INTERVAL="1" #update interval in seconds
if [ -z"$1" ]; then
echo
echousage: $0 [network-interface]
echo
echoe.g. $0 eth0
echo
exit
fi
IF=$1
while true
do
R1=`cat/sys/class/net/$1/statistics/rx_bytes`
T1=`cat/sys/class/net/$1/statistics/tx_bytes`
sleep$INTERVAL
R2=`cat/sys/class/net/$1/statistics/rx_bytes`
T2=`cat/sys/class/net/$1/statistics/tx_bytes`
TBPS=`expr$T2 - $T1`
RBPS=`expr$R2 - $R1`
TKBPS=`expr$TBPS / 1024`
RKBPS=`expr$RBPS / 1024`
echo"TX $1: $TKBPS kb/s RX $1: $RKBPS kb/s"
done
下面的屏幕截圖顯示了上面的兩個腳本的輸出。