MRTG와 같은 도구는 eth0과 같은 특정 인터페이스에서 현재 네트워크 사용률에 대한 네트워크 처리량 / 대역폭 그래프를 제공합니다. Linux / UNIX의 명령 줄에서 해당 정보를 반환하려면 어떻게해야합니까?
가급적이면 시스템에서 표준으로 사용할 수있는 것 이외의 다른 것을 설치하지 않는 것이 좋습니다.
bmon
. 도움이되는 내용 을 추가 하고 싶었 기 때문 입니다. github.com/tgraf/bmon#screenshots
MRTG와 같은 도구는 eth0과 같은 특정 인터페이스에서 현재 네트워크 사용률에 대한 네트워크 처리량 / 대역폭 그래프를 제공합니다. Linux / UNIX의 명령 줄에서 해당 정보를 반환하려면 어떻게해야합니까?
가급적이면 시스템에서 표준으로 사용할 수있는 것 이외의 다른 것을 설치하지 않는 것이 좋습니다.
bmon
. 도움이되는 내용 을 추가 하고 싶었 기 때문 입니다. github.com/tgraf/bmon#screenshots
답변:
출력을 구문 분석 할 수 있습니다. ifconfig
while true; do export `ifconfig p1p1 | grep packets | awk '{print $5, $3}' | xargs echo | sed -E -e "s/([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/rx=\1 rxp=\2 tx=\3 txp=\4/"` ; echo $rx $rxp $tx $txp `cat /tmp/netstat` | awk '{print $1-$5, $2-$6, $3-$7, $4-$8}';echo $rx $rxp $tx $txp > /tmp/netstat; sleep 5 ;done
-bash: export:
RHEL6 에서 overruns : 0 ': not a valid identifier`가 발생합니다. 구문 분석 /sys/class/net/$dev/statistics
(@ephemient 답변의 perl 스크립트 참조)은 직접 훨씬 더 잘 작동합니다.
iftop does for network usage what top(1) does for CPU usage
-http: //www.ex-parrot.com/~pdw/iftop/
iftop이 "표준"인지 모르겠지만 yum install iftop
Fedora에 설치할 수있었습니다 .
iftop
깨끗한 Ubuntu 설치에도 쉽게 설치할 수 있습니다 apt-get install iftop
..
pacman -S iftop
tcpdump
출력을 다시 파싱하는 법을 배우는 것을 미루고 있음을 의미한다고 생각 합니다. 당신을 감사 iftop
하고 wireshark
내가 게으른 될 수 있도록하기위한,.
iftop
더 자세하고 연결 별 통계를 제공합니다.
iftop
이없는 사용자의 경우 설치 가 필요하며 (설치하지 않고 빌드 할 수도 없음 libpcap
) 홈페이지에 root
.
Sar있어? RHEL / CentOS를 사용하는 경우 가능합니다.
priv, dorky 바이너리, hacky 스크립트, libpcap 등이 필요 없습니다. Win.
$ sar -n DEV 1 3
Linux 2.6.18-194.el5 (localhost.localdomain) 10/27/2010
02:40:56 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
02:40:57 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:57 PM eth0 10700.00 1705.05 15860765.66 124250.51 0.00 0.00 0.00
02:40:57 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:57 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
02:40:58 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:58 PM eth0 8051.00 1438.00 11849206.00 105356.00 0.00 0.00 0.00
02:40:58 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:58 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
02:40:59 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:40:59 PM eth0 6093.00 1135.00 8970988.00 82942.00 0.00 0.00 0.00
02:40:59 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 8273.24 1425.08 12214833.44 104115.72 0.00 0.00 0.00
Average: eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
나는 오래 전에이 바보 같은 스크립트를 썼는데 Perl과 Linux≥2.6에 의존한다.
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
use Time::HiRes qw(gettimeofday usleep);
my $dev = @ARGV ? shift : 'eth0';
my $dir = "/sys/class/net/$dev/statistics";
my %stats = do {
opendir +(my $dh), $dir;
local @_ = readdir $dh;
closedir $dh;
map +($_, []), grep !/^\.\.?$/, @_;
};
if (-t STDOUT) {
while (1) {
print "\033[H\033[J", run();
my ($time, $us) = gettimeofday();
my ($sec, $min, $hour) = localtime $time;
{
local $| = 1;
printf '%-31.31s: %02d:%02d:%02d.%06d%8s%8s%8s%8s',
$dev, $hour, $min, $sec, $us, qw(1s 5s 15s 60s)
}
usleep($us ? 1000000 - $us : 1000000);
}
}
else {print run()}
sub run {
map {
chomp (my ($stat) = slurp("$dir/$_"));
my $line = sprintf '%-31.31s:%16.16s', $_, $stat;
$line .= sprintf '%8.8s', int (($stat - $stats{$_}->[0]) / 1)
if @{$stats{$_}} > 0;
$line .= sprintf '%8.8s', int (($stat - $stats{$_}->[4]) / 5)
if @{$stats{$_}} > 4;
$line .= sprintf '%8.8s', int (($stat - $stats{$_}->[14]) / 15)
if @{$stats{$_}} > 14;
$line .= sprintf '%8.8s', int (($stat - $stats{$_}->[59]) / 60)
if @{$stats{$_}} > 59;
unshift @{$stats{$_}}, $stat;
pop @{$stats{$_}} if @{$stats{$_}} > 60;
"$line\n";
} sort keys %stats;
}
sub slurp {
local @ARGV = @_;
local @_ = <>;
@_;
}
/sys/class/net/$dev/statistics
매초마다 읽고 현재 숫자와 평균 변화율을 인쇄합니다.
$ ./net_stats.pl eth0
rx_bytes : 74457040115259 4369093 4797875 4206554 364088
rx_packets : 91215713193 23120 23502 23234 17616
...
tx_bytes : 90798990376725 8117924 7047762 7472650 319330
tx_packets : 93139479736 23401 22953 23216 23171
...
eth0 : 15:22:09.002216 1s 5s 15s 60s
^ current reading ^-------- averages ---------^
/proc/net/dev
하거나 아니면 초당 기본으로 데이터를 계산해야합니까?
nload 는 실시간으로 대역폭을 모니터링하고 sudo apt-get install nload를 사용하여 Ubuntu 또는 Debian에 쉽게 설치할 수있는 훌륭한 도구입니다.
Device eth0 [10.10.10.5] (1/2):
=====================================================================================
Incoming:
. ...|
# ####|
.. |#| ... #####. .. Curr: 2.07 MBit/s
###.### #### #######|. . ## | Avg: 1.41 MBit/s
########|#########################. ### Min: 1.12 kBit/s
........ ################################### .### Max: 4.49 MBit/s
.##########. |###################################|##### Ttl: 1.94 GByte
Outgoing:
########## ########### ###########################
########## ########### ###########################
##########. ########### .###########################
########### ########### #############################
########### ###########..#############################
############ ##########################################
############ ##########################################
############ ########################################## Curr: 63.88 MBit/s
############ ########################################## Avg: 32.04 MBit/s
############ ########################################## Min: 0.00 Bit/s
############ ########################################## Max: 93.23 MBit/s
############## ########################################## Ttl: 2.49 GByte
또 다른 훌륭한 도구는 iftop 이며 쉽게 적용 할 수 있습니다.
191Mb 381Mb 572Mb 763Mb 954Mb
└────────────┴──────────┴─────────────────────┴───────────┴──────────────────────
box4.local => box-2.local 91.0Mb 27.0Mb 15.1Mb
<= 1.59Mb 761kb 452kb
box4.local => box.local 560b 26.8kb 27.7kb
<= 880b 31.3kb 32.1kb
box4.local => userify.com 0b 11.4kb 8.01kb
<= 1.17kb 2.39kb 1.75kb
box4.local => b.resolvers.Level3.net 0b 58b 168b
<= 0b 83b 288b
box4.local => stackoverflow.com 0b 42b 21b
<= 0b 42b 21b
box4.local => 224.0.0.251 0b 0b 179b
<= 0b 0b 0b
224.0.0.251 => box-2.local 0b 0b 0b
<= 0b 0b 36b
224.0.0.251 => box.local 0b 0b 0b
<= 0b 0b 35b
─────────────────────────────────────────────────────────────────────────────────
TX: cum: 37.9MB peak: 91.0Mb rates: 91.0Mb 27.1Mb 15.2Mb
RX: 1.19MB 1.89Mb 1.59Mb 795kb 486kb
TOTAL: 39.1MB 92.6Mb 92.6Mb 27.9Mb 15.6Mb
이전 * nix의 클래식하고 강력한 sar 및 netstat 유틸리티를 잊지 마십시오!
/ proc / net / dev 구문 분석 할 수 있습니다.
/sys/class/net/$dev/statistics
ephemient의 스크립트에서와 같이 구문 분석 과 동등한 것 같습니다 .
dstat
-vmstat, iostat, ifstat, netstat 정보 등을 결합합니다. iftop
-eth에서 실제로 일어나는 일을 분석하는 놀라운 네트워크 대역폭 유틸리티 netio
-TCP / IP를 통해 네트워크의 순 처리량 측정 inq
-스토리지 (일반적으로 Symmetrix)에 대한 정보를 표시하는 CLI 문제 해결 유틸리티입니다. 기본적으로 INQ는 디바이스 이름, Symmetrix ID, Symmetrix LUN 및 용량을 반환합니다.send_arp
-지정된 네트워크 장치 (기본값은 eth0)에서 arp 브로드 캐스트를 전송하여 이전 및 새 IP 주소 매핑을 MAC 주소에보고합니다.EtherApe
-etherman을 모델로 한 Unix 용 그래픽 네트워크 모니터입니다. 링크 계층, IP 및 TCP 모드를 특징으로하며 네트워크 활동을 그래픽으로 표시합니다.iptraf
-네트워크를 통과하는 IP 트래픽에 대한 정보를 표시하는 IP 트래픽 모니터.자세한 내용 : http://felipeferreira.net/?p=1194
그것에 대한 또 다른 빠르고 더러운 bash 스크립트가 있습니다.
#!/bin/bash
IF=$1
if [ -z "$IF" ]; then
IF=`ls -1 /sys/class/net/ | head -1`
fi
RXPREV=-1
TXPREV=-1
echo "Listening $IF..."
while [ 1 == 1 ] ; do
RX=`cat /sys/class/net/${IF}/statistics/rx_bytes`
TX=`cat /sys/class/net/${IF}/statistics/tx_bytes`
if [ $RXPREV -ne -1 ] ; then
let BWRX=$RX-$RXPREV
let BWTX=$TX-$TXPREV
echo "Received: $BWRX B/s Sent: $BWTX B/s"
fi
RXPREV=$RX
TXPREV=$TX
sleep 1
done
이 점을 고려있어 sleep 1
실제로 거친 대역폭 평가를위한 마지막 단 하나의 사실이 아니다 둘째,하지만 충분한을합니다.
@ephemient에게 감사드립니다 /sys/class/net/<interface>
! :)
let BWRX=($RX-$RXPREV)/1024
(나는 지금 그것을 테스트하기 위해 아무것도하지 않는 불구하고)
iftop 및 iptraf 외에도 다음을 확인하십시오.
bwm-ng
(대역폭 모니터 차세대)및 / 또는
cbm
(색상 대역폭 측정기)참조 : http://www.powercram.com/2010/01/bandwidth-monitoring-tools-for-ubuntu.html
값을 얻으려면 다음과 같이 간단한 쉘 oneliner를 사용할 수 있습니다.
S=10; F=/sys/class/net/eth0/statistics/rx_bytes; X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))"; echo $BPS
그것은 10 초 동안 (이 변경주기를 변경하면 평균 "초당 수신 된 바이트 수"를 표시한다 S=10
파라미터, 및는 이용 BPS 송신 대신 BPS를 수신 측정 할 수있는 tx_bytes
대신에 rx_bytes
). eth0
모니터링하려는 네트워크 장치 로 변경 하는 것을 잊지 마십시오 .
물론 평균 속도를 표시하는 데 국한되지는 않지만 (다른 답변에서 언급했듯이 훨씬 더 좋은 결과를 보여주는 다른 도구가 있습니다)이 솔루션은 다른 작업을 수행하기 위해 쉽게 스크립팅 할 수 있습니다.
예를 들어, 다음 셸 스크립트 (가독성을 위해 여러 줄로 분할)는 5 분 평균 전송 속도가 10kBPS 아래로 떨어질 때 (아마 다른 대역폭을 소비하는 프로세스가 완료 될 때)에만 offlineimap 프로세스를 실행합니다.
#!/bin/sh
S=300; F=/sys/class/net/eth0/statistics/tx_bytes
BPS=999999
while [ $BPS -gt 10000 ]
do
X=`cat $F`; sleep $S; Y=`cat $F`; BPS="$(((Y-X)/S))";
echo BPS is currently $BPS
done
offlineimap
주 /sys/class/...
(제출자가 선택했던 것처럼 괜찮 리눅스 특정 linux
태그), 비 오래된 커널을 필요로한다. 쉘 코드 자체는 / bin / sh와 호환됩니다 (따라서 bash뿐만 아니라 dash 및 기타 / bin / sh 구현도 작동합니다). / bin / sh는 실제로 항상 설치되는 것입니다.
나는 좋아 iptraf
하지만 아마도 그것을 설치해야 할 것이고 더 이상 적극적으로 유지되지 않는 것 같습니다.
나는 dstat가 꽤 좋다고 생각합니다. 그래도 설치해야합니다. 필요한 것보다 더 많은 정보를 제공합니다. Netstat는 패킷 속도를 제공하지만 대역폭도 제공하지 않습니다. netstat -s
iperf를 사용하여 네트워크 성능을 벤치 마크 할 수 있습니다 ( 최대 처리량 ). 자세한 내용은 다음 링크를 참조하십시오.
AMI에서 나를 위해 작동하도록 ifconfig 스크립트를 구문 분석 할 수 없으므로 10 초 동안 수신 된 평균 트래픽을 측정하는 작업을 수행했습니다.
date && rxstart=`ifconfig eth0 | grep bytes | awk '{print $2}' | cut -d : -f 2` && sleep 10 && rxend=`ifconfig eth0 | grep bytes | awk '{print $2}' | cut -d : -f 2` && difference=`expr $rxend - $rxstart` && echo "Received `expr $difference / 10` bytes per sec"
죄송합니다. 너무 싸고 불쾌하지만 효과가있었습니다!
ifconfig -a
ip -d link
ls -l /sys/class/net/ (physical and virtual devices)
route -n
json 형식의 (ifconfig -a) 출력을 원한다면 이것을 사용할 수 있습니다 (python)