ping
실행을 중지하지 않고 일반적인 종료 통계를 표시하도록 지시할 수 있는 방법이 있습니까 ?
예를 들어 다음을 빠르게 보고 싶습니다.
--- 8.8.8.8 ping statistics ---
2410 packets transmitted, 2274 received, +27 errors, 5% packet loss, time 2412839ms
rtt min/avg/max/mdev = 26.103/48.917/639.493/52.093 ms, pipe 3
프로그램을 중지하거나 축적된 데이터를 잃을 필요가 없습니다.
답변1
맨페이지 에서 ping
(강조):
지정된 수의 패킷이 전송(및 수신)되거나 프로그램이 SIGINT로 종료되면 간략한 요약이 표시됩니다.SIGQUIT 신호를 사용하여 프로세스를 종료하지 않고도 더 짧은 현재 통계를 얻을 수 있습니다.
따라서 통계를 약간 덜 장황하게 만들고 싶다면 다음과 같이 하면 됩니다.
# the second part is only for showing you the PID
ping 8.8.8.8 & jobs ; fg
<... in another terminal ...>
kill -SIGQUIT $PID
간략한 통계는 다음과 같습니다.
19/19 packets, 0% loss, min/avg/ewma/max = 0.068/0.073/0.074/0.088 ms
답변2
실행 중에 핑 통계를 얻는 더 쉬운 방법이 있습니다.Ctrl + |(수직 슬래시 또는 파이프라인이라고도 함)
개인적으로 많이 사용하고 있으니 한번 사용해 보세요.
64 bytes from 192.168.1.1: icmp_seq=6 ttl=64 time=0.893 ms
64 bytes from 192.168.1.1: icmp_seq=23 ttl=64 time=0.862 ms
64 bytes from 192.168.1.1: icmp_seq=24 ttl=64 time=3.18 ms
64 bytes from 192.168.1.1: icmp_seq=35 ttl=64 time=0.877 ms
64 bytes from 192.168.1.1: icmp_seq=36 ttl=64 time=0.866 ms
**36/36 packets, 0% loss, min/avg/ewma/max = 0.832/0.993/0.930/3.185 ms**
64 bytes from 192.168.1.1: icmp_seq=37 ttl=64 time=0.909 ms
64 bytes from 192.168.1.1: icmp_seq=38 ttl=64 time=2.03 ms
64 bytes from 192.168.1.1: icmp_seq=39 ttl=64 time=0.839 ms
64 bytes from 192.168.1.1: icmp_seq=40 ttl=64 time=0.880 ms
답변3
Linux(Ubuntu 20.04에서 테스트됨)
SIGQUIT
신호를 보냅니다 .
출력 예:
64 bytes from localhost (127.0.0.1): icmp_seq=138 ttl=64 time=0.021 ms
64 bytes from localhost (127.0.0.1): icmp_seq=139 ttl=64 time=0.022 ms
139/139 packets, 0% loss, min/avg/ewma/max = 0.014/0.022/0.022/0.057 ms
64 bytes from localhost (127.0.0.1): icmp_seq=140 ttl=64 time=0.090 ms
64 bytes from localhost (127.0.0.1): icmp_seq=141 ttl=64 time=0.025 ms
실행 중에 전송됨
CTRL+ \= quit
에 따르면 stty -a
다음 도
유효합니다 : CTRL+ |;CTRL4
하나 이상의 알려진 PID로 보내기
kill -SIGQUIT <pid> [...]
달리는 모든 사람에게 보내기
ps -o pid= -C ping | xargs -r kill -SIGQUIT
실행 중인 모든 사용자에게 정기적으로 전송됩니다.
while sleep 20; do ps -o pid= -C ping | xargs -r kill -SIGQUIT; done
배경 작업으로
while sleep 20; do ps -o pid= -C ping | xargs -r kill -SIGQUIT; done &
FreeBSD(FreeBSD 11.3을 기반으로 pfSense 2.4.5에서 테스트됨)
INFO
신호를 보냅니다 .
CTRL+를 통해 전송할 때의 출력 예 T:
64 bytes from 127.0.0.1: icmp_seq=137 ttl=64 time=0.328 ms
64 bytes from 127.0.0.1: icmp_seq=138 ttl=64 time=0.028 ms
load: 0.18 cmd: ping 62483 [select] 144.69r 0.00u 0.01s 0% 2256k
139/139 packets received (100.0%) 0.018 min / 0.072 avg / 0.505 max
64 bytes from 127.0.0.1: icmp_seq=139 ttl=64 time=0.116 ms
64 bytes from 127.0.0.1: icmp_seq=140 ttl=64 time=0.027 ms
다음을 통해 보낼 때 샘플 출력 kill
:
64 bytes from 127.0.0.1: icmp_seq=137 ttl=64 time=0.328 ms
64 bytes from 127.0.0.1: icmp_seq=138 ttl=64 time=0.028 ms
139/139 packets received (100.0%) 0.018 min / 0.072 avg / 0.505 max
64 bytes from 127.0.0.1: icmp_seq=139 ttl=64 time=0.116 ms
64 bytes from 127.0.0.1: icmp_seq=140 ttl=64 time=0.027 ms
실행 중에 전송됨
CTRL+ T= status
에 따르면 stty -a
.
하나 이상의 알려진 PID로 보내기
kill -INFO <pid> [...]
달리는 모든 사람에게 보내기
ps -o comm= -o pid= | egrep '^ping[[:space:]]' | awk -F' ' '{print $2}' | xargs -r kill -INFO
실행 중인 모든 사용자에게 정기적으로 전송됩니다.
printf "while ({ sleep 20 })\nps -o comm= -o pid= | egrep '^ping[[:space:]]' | awk -F' ' '{print \0442}' | xargs -r kill -INFO\nend\n" | tcsh
배경 작업으로
printf "while ({ sleep 20 })\nps -o comm= -o pid= | egrep '^ping[[:space:]]' | awk -F' ' '{print \0442}' | xargs -r kill -INFO\nend\n" | tcsh &
메모 및 승인
저에게 주기적 접근 방식에 대한 아이디어를 처음으로 심어준 @pmos의 답변과 이에 기여한 다른 모든 답변과 의견에 감사드립니다.
@VictorYarema 감사합니다제안하다나는 돌아섰다내 댓글실용적인 답변으로. 원래 의견의 접근 방식의 본질은 동일하지만 시간이 지남에 따라 다음과 같이 발전했습니다.
-r
결과가 없을 때 pid 없이xargs
실행되는 것을 방지하는 옵션이 추가되었습니다 .kill
ps
- 헤더 행을 제거하기 위해 Linux와 FreeBSD에서는 의미가 다르기 때문에 열 헤더 텍스트를 비워 두는 옵션을
ps
사용했습니다.-o pid=
h
h
- Linux에서는
ps
명시적 옵션이 지원되지만--no-headers
FreeBSD에서는 그렇지 않습니다.
- Linux에서는
- 명령을 테스트 조건
sleep
으로 이동while
- 불필요한 인용문을 제거했습니다.
- FreeBSD로 포팅됨
- 이 답변 덕분에 나는 할 수 있습니다tcsh에서 한 줄 while 루프 작성그것은 결국 나를 필요로 한다인쇄$사용
awk
- 이 답변 덕분에 나는 할 수 있습니다tcsh에서 한 줄 while 루프 작성그것은 결국 나를 필요로 한다인쇄$사용
답변4
시도 Ctrl+4
다음과 같은 줄이 표시됩니다.
312/312 packets, 0% loss, min/avg/ewma/max = 0.312/1.236/0.505/208.655 ms