리눅스 커맨드 라인에서 인터페이스 대역폭을 어떻게 얻을 수 있습니까? 얻으려는 학교 프로젝트를하고 있습니다. 내가 작업중

주어진 초 단위 또는 다른 작은 시간 단위로 네트워크 인터페이스의 대역폭을 얻으려는 학교 프로젝트를하고 있습니다. 내가 작업중 인 Perl 스크립트에 이것이 필요합니다. 따라서 비 대화식이어야하며 결과 만 인쇄합니다.

어떤 제안?



답변

에 의해 전송 및 수신 바이트 수 eth0인터페이스가 자랐다는 이후에 판독 될 수 /sys/class/net/eth0/statistics/tx_bytes/sys/class/net/eth0/statistics/rx_bytes각각. 에서 읽을 수있는 패킷 수는 …/tx_packets…/rx_packets입니다. 이러한 파일을 제공하지 않는 이전 커널이있는 경우 데이터는의 출력에서 ​​사용할 수 있습니다 /sbin/ifconfig eth0.


답변

간단한 접근 방식은 다음과 같습니다.

  • ifconfig를interface name 한 번 실행 하고 출력을 캡처하십시오.
  • “RX bytes”및 “TX bytes”에서 값을 추출합니다.
  • 잠시만 기다려
  • 처음 두 단계를 다시 반복하십시오
  • 델타 계산

답변