iftop의 텍스트 출력을 제한하는 방법은 무엇입니까?

iftop의 텍스트 출력을 제한하는 방법은 무엇입니까?

iftop텍스트 모드에서 순환하지 않고 활성 연결의 스냅샷을 한 번 인쇄하도록 도구에 지시하는 방법은 무엇입니까 ?

iftop -t -i  eth2

답변1

방법은 없을 것 같습니다말하다 iftop -t하나의 청크를 인쇄하고 반복하지 않습니다.

비교를 위해: top -b -n 1원하는 것을 할 수 있으며 관련 옵션은 입니다 -n 1. 다른 도구이지만 이 예는 도구가 옵션을 지원할 때 얼마나 쉬운지 보여줍니다(참고: iftop이해 -n하지만다른, 관련 없는 옵션).

여전히 출력을 구문 분석하고 첫 번째 청크 이후에 중지할 수 있습니다. 내 데비안 10에서는 iftop -t많은 문자로 구성된 줄로 각 청크를 종료합니다 =. ^==오탐 없이 청크의 끝을 감지하는 것이 좋은 정규식인 것 같습니다 .

이 명령은 첫 번째 청크 후에 종료됩니다.

iftop -t -i eth2 | sed '/^==/ q'

또는:

iftop -t -i eth2 | awk '{print; if ($0 ~ "^==") exit}'

N번째 청크 이후에 종료하려면 더 복잡한 코드가 필요합니다. 다음 예에서 N은 3입니다. n=3필요에 맞게 조정하세요.

iftop -t -i eth2 | awk -v n=3 '
   BEGIN {if (n<=0) exit}
   {
       print
       if ($0 ~ "^==") n--
       if (n<=0) exit
   }'

노트:

  • awk(또는 sed)이 종료 되면 iftop즉시 통보되지 않습니다. SIGPIPE이제 끊어진 파이프에 더 많은 내용을 쓰려고 할 때만 가져옵니다 . 이는 iftop 또 다른 청크(인쇄되지 않음)가 생성될 때까지 전체 명령이 정지됨을 의미합니다 . 이것은 정상입니다. 이 문제를 최적화하는 iftop것은 거의 의미가 없으며 영원히 멈출 것 같지 않습니다. 비교하다그것이 어떻게 의미가 있는지tail.
  • 전체 명령이 콘솔에 인쇄되면 청크 중간에 출력이 일시 중지되는 것을 볼 수 있습니다. 이 동작은 iftop -t중간에 일시 중지된 전체 청크가 나타나는 단독의 출력과 다릅니다 . iftop와 사이의 버퍼링이 awk원인입니다. 내 테스트에서는stdbuf -oL iftop …도움이되었습니다.
  • iftopstderr에 일부 메시지를 인쇄합니다. 를 사용하지 않는 한 파이프를 통과하지 않습니다 iftop … 2>&1 | ….

관련 정보