LINUX.ORG.RU

realtime grep


0

0

Собственно, вопрос такой: как отключить буферизацию в самом шелле? При выполнении программ, например, если написать

# program | grep tag

то grep будет выводить не по одному значению в реальном времени, а блоками приблизительно по 1Kb (по карйней мере в Debian). Аналогично и с

# program > log.txt

ЗЫ В самой программе буферизация glibc отключена

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

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

пробовал --line-buffered, не работает. Данные выдаются блоками, а не построчно. Вот например

# amixer events | grep --line-buffered "Master"
event add: numid=11,iface=MIXER,name='Master Mono Playback Switch'
event add: numid=12,iface=MIXER,name='Master Mono Playback Volume'
event add: numid=1,iface=MIXER,name='Master Surround Playback Switch'
event add: numid=2,iface=MIXER,name='Master Surround Playback Volume'
event add: numid=9,iface=MIXER,name='Master Playback Switch'
event add: numid=10,iface=MIXER,name='Master Playback Volume'

далее крутим в любом микшере канал Master, спустя некоторое время grep выдаёт сразу кусок

event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'
event value: numid=10,iface=MIXER,name='Master Playback Volume'

Без grep эти события выводятся на экран как положено, один за одним в реальном времени.

alex_custov ★★★★★
() автор топика

А если в выводе время указывать?

henturis
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.