Когда я пинг, у меня есть этот дисплей:
> 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
Я хотел бы иметь время пинга раньше.
Что-то типа:
> (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
Как бы вы сделали это в командной строке (если это возможно)?
command-line
ping
Оливье Понс
источник
источник
Ответы:
Использование:
Вы получите такой результат:
источник
ping 192.168.70.1 | while read pong; do echo "$(awk '{print $1}' /proc/uptime): $pong"; done
Еще одна возможность использовать
ping -D
опцию, которая получает метку времени в качестве времени Unix.Вот вариант команды «Ачу» с немного другим форматом:
Это получает вас:
источник
Существует утилита
ts
, которая читает stdin, добавляет метки времени и записывает их в stdout:Он может быть установлен в Ubuntu с .
sudo apt install moreutils
источник
apt install moreutils
Вы также можете использовать
gawk
(илиawk
, если ваши/etc/alternatives/awk
указывает на/usr/bin/gawk
):Это похоже на подход в ответе Ачу , но
ping
выходные данные передаютсяgawk
вместо цикла оболочки, который вызываетdate
. Как и в случае с этим подходом, он работает без-c
, но если вы не перейдете к остановке ping после n ping и остановите цикл с помощью + , то не будет печатать обычную статистику.-c n
CtrlCping
Это происходит независимо от того, передается ли
ping
выводgawk
илиwhile
цикл оболочки . Причина в том, что команда на правой стороне канала, а неping
получает SIGINT при нажатии Ctrl+ C, иping
не знает, чтобы напечатать статистику до ее завершения.Если вы работали
ping
без-c
левой стороны канала (как показано выше) и хотите завершить его таким образом, чтобы он по-прежнему печатал статистику, тогда вместо нажатия Ctrl+ Cв терминале, где он работает, вы можете запустить с другого терминала, заменив его идентификатором команды. Если вы используете только один экземпляр, вы можете просто использовать .kill -INT PID
PID
ping
ping
killall -INT ping
В качестве альтернативы, вы можете заменить
ping
команду на левой стороне канала командой, которая запускает оболочку, сообщает идентификатор процесса этой оболочки, а затем заменяет эту оболочкуping
командой (в результате чего она имеет тот же PID):Затем в первой строке вывода будет показан идентификатор процесса
ping
команды (который обычно будет отличаться каждый раз). Это будет выглядеть так, но с другим временем и датой и, возможно, с другим идентификатором процесса:Затем из другого терминала можно запустить
kill -INT 7557
вместо7557
действительного идентификатора процесса, который вы видели, чтобы прекратить выполнениеping
команды таким образом, чтобы заставить ее печатать статистику.(Если вы воспользуетесь функциями управления заданиями своей оболочки , то вы сможете добиться этого и в том же терминале. Но если вы хотите скопировать текст из своего терминала, не удаляя лишнюю часть, где вы выполняли команды в этом терминале, тогда вы должны прекратить
ping
с отдельного терминала.)Дальнейшее чтение:
man ping
- « Когда указанное количество пакетов было отправлено (и получено) или если программа завершена с SIGINT, отображается краткое резюме ».источник
SIGINT
(что и происходит при нажатии Ctrl + C) вping
конкретный процесс, используяkill
илиkillall
. Я расширил этот ответ с деталями.Если вы заинтересованы в сохранении его в файл, введите в терминале следующую команду
Вам не нужно создавать текстовые файлы, это будет автоматически
Ping_Test.txt
источник
(спасибо Ачу и Элии Кагану за идеи) есть способ
ping
выводаping
ctrl+c
для этого нужно указать правой части команды (после канала) игнорировать
SIGINT
использованиеtrap "" INT
:источник