Вывод не перенаправляет в файл

Я испытываю странности (или, скорее, показываю невежество в Linux).

Я хочу узнать распределение вероятности пинг-запросов, поэтому я решил на некоторое время пинговать какой-нибудь случайный сайт, получить вывод, чтобы сохранить только мс, а затем перенаправить в файл. Я делаю это.

ping www.doggiedooley.com | grep -o "[[:digit:]]*.[[:digit:]]* ms" > ping.txt

Я возлагал большие надежды на эту команду, но даже если файл создан, он не содержит ничего, даже через некоторое время. Если я удаляю перенаправление, выводится. Я даже могу успешно перенаправить вывод на другой терминал.

ping www.doggiedooley.com | grep -o "[[:digit:]]*.[[:digit:]]* ms" > /dev/pts/1

Почему первая команда не работает должным образом?

2
задан 12 April 2013 в 00:31

1 ответ

Похоже на проблему буферизации стандартного вывода. Вы можете отключить его перед перенаправлением с помощью:

stdbuf -o0

Так что используйте:

 ping www.doggiedooley.com | stdbuf -o0 grep -o "[[:digit:]]*.[[:digit:]]* ms" > ping.txt

Или используйте опцию -c из ping для ограничения отправки пакетов.

0
ответ дан 12 April 2013 в 00:31

Другие вопросы по тегам:

Похожие вопросы: