También puede usar gawk
(o awk
, si sus /etc/alternatives/awk
puntos a /usr/bin/gawk
):
ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'
Esto es similar al enfoque en la respuesta de Achu , pero ping
la salida de la canalización se dirige a gawk
un bucle de shell que llama date
. Al igual que con ese enfoque, funciona sin él -c
, pero si no pasa para hacer que el ping se detenga después de n pings, y detiene el ciclo con + , no imprimirá las estadísticas habituales.-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
Esto sucede ya sea que ping
la salida se canalice a gawk
un while
bucle de shell . La razón es que el comando en el lado derecho de la tubería, en lugar de ping
, recibe SIGINT cuando se presiona Ctrl+ C, y ping
no sabe imprimir las estadísticas antes de terminar.
Si ha corrido ping
sin -c
en el lado izquierdo de una tubería (como se muestra arriba) y desea terminarlo de tal manera que todavía imprima las estadísticas, entonces en lugar de presionar Ctrl+ Cen el terminal donde está corriendo, puede ejecutar desde otro terminal, reemplazando con el ID de proceso del comando. Si solo está ejecutando una instancia de, entonces simplemente podría usar .kill -INT PID
PID
ping
ping
killall -INT ping
Alternativamente, puede reemplazar el ping
comando en el lado izquierdo de la tubería con un comando que ejecuta un shell, informa el ID del proceso de ese shell y luego reemplaza ese shell con el ping
comando (haciendo que tenga el mismo PID):
sh -c 'echo $$; exec ping www.google.fr' | gawk '{print strftime("%c: ") $0}'
Luego, la primera línea de salida mostrará el ID del proceso del ping
comando (que generalmente será diferente cada vez). Se vería así, pero con una fecha y hora diferentes y probablemente una ID de proceso diferente:
Tue 20 Mar 2018 12:11:13 PM EDT: 7557
Luego, desde otro terminal, puede ejecutar kill -INT 7557
, reemplazando 7557
con el ID de proceso real que vio, para finalizar el ping
comando de tal manera que haga que imprima estadísticas.
(Si aprovecha las funciones de control de trabajo de su shell , también puede lograr esto dentro de la misma terminal. Pero si desea copiar texto desde su terminal sin tener que quitar ninguna parte extrañosa donde ejecutó comandos en esa terminal, entonces debe terminar ping
desde un terminal separado).
Otras lecturas: