出力を tail -f から grep にパイプした後、ファイルに書き込もうとしています。たとえば、error_log "FreeSwitch.log" 内の "Playing:" を含むすべての行をファイル "temp" に書き込みます。
tail -f "/var/lof/freeswitch/freeswitch.log" | grep "Playing:" > temp
しかし、動作していません! centos5.5です
バッファリングに問題があるのではないでしょうか。BashFAQ:バッファリングとは何ですか?を参照してください。
たとえば、次のことを試してみてください。
tail -f /var/lof/freeswitch/freeswitch.log | grep --line-buffered "Playing:" > temp
-f, --follow[={name|descriptor}]
output appended data as the file grows;
大きくなるにつれてファイルをスキャンします。そして、それは間隔のあるプロセスです。中断することしかできません。
パラメータを使用します:
-c, --bytes=K
output the last K bytes; alternatively, use -c +K to output bytes starting with the Kth of each file
また
-n, --lines=K
output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth
編集:bmkが言ったように:
grep --line-buffered
それはあなたを助けると思います
の後にファイル名を入れました>
か?
tail -f /var/lof/freeswitch/freeswitch.log | grep "Playing:" > temp