Podczas pingowania mam ten ekran:
> ping -i 4 www.google.fr
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms
Chciałbym wcześniej mieć czas na ping.
Coś jak:
> (right functions) + ping -i 7 www.google.fr
mardi 15 mai 2012, 10:29:06 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
mardi 15 mai 2012, 10:29:13 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
mardi 15 mai 2012, 10:29:20 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms
Jak zrobiłbyś to w linii poleceń (jeśli to możliwe)?
command-line
ping
Olivier Pons
źródło
źródło
Odpowiedzi:
Posługiwać się:
Otrzymasz taki wynik:
źródło
ping 192.168.70.1 | while read pong; do echo "$(awk '{print $1}' /proc/uptime): $pong"; done
Inna możliwość skorzystania z
ping -D
opcji, która daje ci znacznik czasu jako czas uniksowy.Oto wersja polecenia „Achu” o nieco innym formacie:
To daje ci:
źródło
Istnieje narzędzie o nazwie
ts
, które odczytuje stdin, dodaje znaczniki czasu i zapisuje je na stdout:Można go zainstalować w Ubuntu za pomocą .
sudo apt install moreutils
źródło
apt install moreutils
Możesz także użyć
gawk
(lubawk
, jeśli/etc/alternatives/awk
wskazuje na to/usr/bin/gawk
):Jest to podobne do podejścia zawartego w odpowiedzi Achu , ale
ping
dane wyjściowe są przesyłane strumieniowogawk
zamiast do wywoływanej pętli powłokidate
. Podobnie jak w przypadku tego podejścia, działa bez niego-c
, ale jeśli nie przejdziesz do ping stop po n pingach i zatrzymasz pętlę za pomocą + , nie wydrukuje zwykłych statystyk.-c n
CtrlCping
Dzieje się tak niezależnie od tego, czy
ping
dane wyjściowe są przesyłane do potoku,gawk
czywhile
pętli powłoki . Powodem jest to, że polecenie po prawej stronie potokuping
otrzymuje SIGINT po naciśnięciu Ctrl+ Ciping
nie wie, aby wydrukować statystyki przed zakończeniem.Jeśli uruchomiłeś się
ping
bez-c
po lewej stronie potoku (jak pokazano powyżej) i chcesz go zakończyć w taki sposób, aby nadal drukował statystyki, to zamiast naciskać Ctrl+ Cw terminalu, na którym działa, możesz uruchomić z innego terminala, zastępując go identyfikatorem procesu polecenia. Jeśli korzystasz tylko z jednej instancji, możesz po prostu użyć .kill -INT PID
PID
ping
ping
killall -INT ping
Alternatywnie można zastąpić
ping
polecenie po lewej stronie potoku poleceniem, które uruchamia powłokę, zgłasza identyfikator procesu tej powłoki, a następnie zastępuje tę powłokęping
poleceniem (powodując, że ma on ten sam PID):W pierwszym wierszu wyniku pojawi się identyfikator procesu
ping
polecenia (który zwykle będzie inny za każdym razem). Wyglądałoby to tak, ale z inną godziną i datą i prawdopodobnie innym identyfikatorem procesu:Następnie z innego terminala możesz uruchomić
kill -INT 7557
, zastępując7557
rzeczywisty identyfikator procesu, który widziałeś, aby zakończyćping
polecenie w taki sposób, aby wydrukowało statystyki.(Jeśli skorzystasz z funkcji kontroli zadań powłoki , możesz to również osiągnąć w tym samym terminalu. Ale jeśli chcesz skopiować tekst z terminala bez konieczności usuwania jakiejkolwiek obcej części, w której uruchomiłeś polecenia w tym terminalu, to powinieneś zakończyć
ping
z osobnego terminalu).Dalsza lektura:
man ping
- „ Gdy określona liczba pakietów została wysłana (i odebrana) lub jeśli program zakończy się SIGINT, wyświetlone zostanie krótkie podsumowanie. ”źródło
SIGINT
(co robi naciśnięcie Ctrl + C) doping
konkretnego procesu, używająckill
lubkillall
. Rozszerzyłem tę odpowiedź o szczegóły.Jeśli chcesz zapisać go w pliku, wpisz poniższe polecenie w terminalu
Nie musisz tworzyć żadnych plików tekstowych, zrobi to automatycznie
Ping_Test.txt
źródło
(dzięki Achu i Eliahowi Kaganowi za pomysły) jest na to sposób
ping
wyjściaping
ctrl+c
aby to zrobić, należy poinstruować prawą część polecenia (po potoku), aby zignorować
SIGINT
za pomocątrap "" INT
:źródło