
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 …
도움이되었습니다. iftop
stderr에 일부 메시지를 인쇄합니다. 를 사용하지 않는 한 파이프를 통과하지 않습니다iftop … 2>&1 | …
.