gawk
(또는을 가리키는 awk
경우)를 사용할 수도 있습니다 ./etc/alternatives/awk
/usr/bin/gawk
ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'
이것은 Achu의 답변 접근 방식과 유사 하지만 호출하는 쉘 루프 대신 ping
출력이 파이프됩니다 . 그 접근 방식과 마찬가지로없이 작동 하지만, 당신이 통과하지 않는 경우 후 핑 정지를 만들기 위해 N 핑, 당신이 가진 루프 중지 +를 , 일반적인 통계를 인쇄되지 않습니다.gawk
date
-c
-c n
CtrlCping
ek@Io:~$ ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'
Tue 03 Jan 2017 10:09:51 AM EST: PING www.google.fr (216.58.193.99) 56(84) bytes of data.
Tue 03 Jan 2017 10:09:51 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=1 ttl=51 time=327 ms
Tue 03 Jan 2017 10:09:52 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=2 ttl=51 time=302 ms
Tue 03 Jan 2017 10:09:53 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=3 ttl=51 time=282 ms
Tue 03 Jan 2017 10:09:54 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=4 ttl=51 time=349 ms
Tue 03 Jan 2017 10:09:54 AM EST:
Tue 03 Jan 2017 10:09:54 AM EST: --- www.google.fr ping statistics ---
Tue 03 Jan 2017 10:09:54 AM EST: 4 packets transmitted, 4 received, 0% packet loss, time 3003ms
Tue 03 Jan 2017 10:09:54 AM EST: rtt min/avg/max/mdev = 282.035/315.227/349.166/25.398 ms
ek@Io:~$ ping www.google.fr | gawk '{print strftime("%c: ") $0}'
Tue 03 Jan 2017 10:10:35 AM EST: PING www.google.fr (216.58.193.99) 56(84) bytes of data.
Tue 03 Jan 2017 10:10:35 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=1 ttl=51 time=305 ms
Tue 03 Jan 2017 10:10:35 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=2 ttl=51 time=365 ms
Tue 03 Jan 2017 10:10:36 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=3 ttl=51 time=390 ms
Tue 03 Jan 2017 10:10:38 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=4 ttl=51 time=824 ms
Tue 03 Jan 2017 10:10:38 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=5 ttl=51 time=287 ms
^C
이것은 ping
출력이 파이프로 전달 되는지 gawk
또는 쉘 while
루프로 발생하는지에 관계없이 발생합니다 . 그 이유는 + 가 눌려 졌을 때 파이프의 오른쪽에있는 명령 ping
이 SIGINT 를 받고 종료되기 전에 통계를 인쇄 할 줄 모르기 때문입니다.CtrlCping
파이프의 왼쪽에서 실행 ping
하지 않고 -c
(위 그림 참조) 통계를 인쇄하는 방식으로 파이프를 종료하려는 경우 실행중인 터미널에서 Ctrl+ 를 누르지 않고 C실행할 수 있습니다. 다른 터미널 에서 명령 의 프로세스 ID로 바꿉니다 . 인스턴스를 하나만 실행하는 경우 간단히을 사용할 수 있습니다 .kill -INT PID
PID
ping
ping
killall -INT ping
또는 ping
파이프 왼쪽 의 명령 을 쉘을 실행 하는 명령으로 바꾸고 해당 쉘의 프로세스 ID를보고 한 다음 해당 쉘을 ping
명령으로 바꿉니다 (동일한 PID를 갖기 때문에).
sh -c 'echo $$; exec ping www.google.fr' | gawk '{print strftime("%c: ") $0}'
그런 다음 첫 번째 출력 행에 ping
명령 의 프로세스 ID가 표시 됩니다 (일반적으로 매번 다름). 다음과 같지만 시간과 날짜가 다르고 프로세스 ID가 다를 수 있습니다.
Tue 20 Mar 2018 12:11:13 PM EDT: 7557
그런 다음 다른 터미널 kill -INT 7557
에서을 실행 7557
하여 본 실제 프로세스 ID로 바꾸어 ping
통계를 인쇄하는 방식으로 명령 을 종료 할 수 있습니다.
(쉘의 작업 제어 기능을 이용한다면, 같은 터미널에서도이를 달성 할 수 있습니다. 그러나 터미널에서 명령을 실행 한 곳에서 여분의 부분을 제거하지 않고 터미널에서 텍스트를 복사하려면 ping
별도의 터미널에서 종료해야합니다 .)
더 읽을 거리 :