Ayrıca kullanabilirsiniz gawk
(veya awk
, eğer /etc/alternatives/awk
işaret ettiği /usr/bin/gawk
):
ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'
Bu Achu'nun cevabındaki yaklaşıma benziyor ancak ping
çıkışı gawk
çağıran bir kabuk halkası yerine aktarılıyordate
. Bu yaklaşımla gibi, olmadan çalışır -c
, ancak geçmek yoksa sonra ping stop yapmak n ping'lerimin ve birlikte döngüyü durdurmak + , olağan istatistiklerini yazdırmaz.-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
Bu ping
, çıktının boru hattına mı gawk
yoksa bir kabuk while
döngüsüne mi yapıldığını gösterir . Nedeni ziyade, borunun sağ tarafında o komutu ping
aldığında SIGINT zaman Ctrl+ Cbasıldığında ve ping
sonlandırıldı önce istatistiklerini yazdırmak için bilmiyor.
Çalıştırmak var ping
olmayan -c
bir borunun sol tarafında (yukarıda gösterildiği gibi) ve bu yine de daha sonra yerine presleme, istatistik yazdırır şekilde sonlandırmak için isteyen Ctrl+ Cçalıştığı burada, terminal olarak, çalıştırabilir başka bir terminalden komutun işlem kimliğiyle değiştirilir . Yalnızca bir örneğini çalıştırıyorsanız, kullanmanız yeterlidir .kill -INT PID
PID
ping
ping
killall -INT ping
Alternatif olarak, ping
borunun sol tarafındaki komutu bir kabuk çalıştıran bir komutla değiştirebilir, o kabuğun işlem kimliğini rapor edebilir ve daha sonra bu kabuğu ping
komutla değiştirebilir (aynı PID'ye sahip olmasına neden olabilir):
sh -c 'echo $$; exec ping www.google.fr' | gawk '{print strftime("%c: ") $0}'
Daha sonra, ilk çıktı satırı, ping
komutun işlem kimliğini gösterecektir (bu her seferinde farklı olacaktır). Şuna benzerdi, ancak farklı bir zaman ve tarih ve muhtemelen farklı bir işlem kimliği ile:
Tue 20 Mar 2018 12:11:13 PM EDT: 7557
Ardından, başka bir terminalden, gördüğünüz gerçek işlem kimliğiyle kill -INT 7557
değiştirerek komutu çalıştırarak istatistikleri yazdırabilecek şekilde çalıştırabilirsiniz.7557
ping
(Kabuğunuzun iş kontrolü özelliklerinden faydalanırsanız , aynı terminalde de bunu başarabilirsiniz. Ancak, terminalde komutları çalıştırdığınız herhangi bir parçayı kaldırmak zorunda kalmadan metni terminalinizden kopyalamak istiyorsanız, o zaman ping
ayrı bir terminalden sonlandırmanız gerekir .)
Daha fazla okuma: