6

出力を tail -f から grep にパイプした後、ファイルに書き込もうとしています。たとえば、error_log "FreeSwitch.log" 内の "Playing:" を含むすべての行をファイル "temp" に書き込みます。

 tail -f "/var/lof/freeswitch/freeswitch.log" | grep "Playing:" > temp

しかし、動作していません! centos5.5です

4

4 に答える 4

13

バッファリングに問題があるのではないでしょうか。BashFAQ:バッファリングとは何ですか?を参照してください。

たとえば、次のことを試してみてください。

tail -f /var/lof/freeswitch/freeswitch.log | grep --line-buffered "Playing:" > temp
于 2011-03-17T15:50:44.560 に答える
2
-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  

それはあなたを助けると思います

于 2011-03-17T15:46:33.733 に答える
1

の後にファイル名を入れました>か?

tail -f /var/lof/freeswitch/freeswitch.log | grep "Playing:" > temp
于 2011-03-17T15:34:47.503 に答える