Я испытываю странности (или, скорее, показываю невежество в Linux).
Я хочу узнать распределение вероятности пинг-запросов, поэтому я решил на некоторое время пинговать какой-нибудь случайный сайт, получить вывод, чтобы сохранить только мс, а затем перенаправить в файл. Я делаю это.
ping www.doggiedooley.com | grep -o "[[:digit:]]*.[[:digit:]]* ms" > ping.txt
Я возлагал большие надежды на эту команду, но даже если файл создан, он не содержит ничего, даже через некоторое время. Если я удаляю перенаправление, выводится. Я даже могу успешно перенаправить вывод на другой терминал.
ping www.doggiedooley.com | grep -o "[[:digit:]]*.[[:digit:]]* ms" > /dev/pts/1
Почему первая команда не работает должным образом?
Похоже на проблему буферизации стандартного вывода. Вы можете отключить его перед перенаправлением с помощью:
stdbuf -o0
Так что используйте:
ping www.doggiedooley.com | stdbuf -o0 grep -o "[[:digit:]]*.[[:digit:]]* ms" > ping.txt
Или используйте опцию -c
из ping
для ограничения отправки пакетов.