Vous pouvez également utiliser gawk
(ou awk
, si vos /etc/alternatives/awk
points sont /usr/bin/gawk
):
ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'
Ceci est similaire à l'approche de la réponse d'Achu , mais ping
la sortie est dirigée vers gawk
au lieu d'une boucle shell qui appelle date
. Comme avec cette approche, cela fonctionne sans -c
, mais si vous ne réussissez pas à arrêter ping après n pings, et que vous arrêtez la boucle avec + , les statistiques habituelles ne seront pas imprimées.-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
Cela se produit que ping
la sortie soit dirigée vers gawk
ou une while
boucle shell . La raison en est que la commande située sur le côté droit du tuyau, plutôt que ping
, reçoit SIGINT lorsque vous appuyez sur Ctrl+ C, et ping
ne sait pas imprimer les statistiques avant d'être terminée.
Si vous avez exécuté ping
sans -c
sur le côté gauche d'un tuyau (comme indiqué ci-dessus) et que vous souhaitez le terminer de manière à imprimer les statistiques, alors au lieu d'appuyer sur Ctrl+ Cdans le terminal où il est exécuté, vous pouvez exécuter depuis un autre terminal, en le remplaçant par l'ID de processus de la commande. Si vous n'exécutez qu'une seule instance de, vous pouvez simplement utiliser .kill -INT PID
PID
ping
ping
killall -INT ping
Vous pouvez également remplacer la ping
commande située à gauche du canal par une commande qui exécute un shell, signale l'ID de processus de ce shell, puis remplace ce shell par la ping
commande (le même PID lui est alors attribué):
sh -c 'echo $$; exec ping www.google.fr' | gawk '{print strftime("%c: ") $0}'
Ensuite, la première ligne de sortie affiche l’ID de processus de la ping
commande (qui sera généralement différent à chaque fois). Cela ressemblerait à ceci, mais avec une heure et une date différentes et probablement un identifiant de processus différent:
Tue 20 Mar 2018 12:11:13 PM EDT: 7557
Ensuite, à partir d'un autre terminal, vous pouvez exécuter kill -INT 7557
, en remplaçant 7557
par l'ID de processus réel que vous avez vu, pour mettre fin à la ping
commande de manière à lui faire imprimer des statistiques.
(Si vous tirez parti des fonctionnalités de contrôle des tâches de votre shell , vous pourrez le faire également dans le même terminal. Toutefois, si vous souhaitez copier du texte de votre terminal sans supprimer aucune partie extranet dans laquelle vous avez exécuté des commandes, vous devez terminer à ping
partir d'un terminal séparé.)
Lectures complémentaires: