top
リダイレクトでコマンドを使用するとうまく機能します。
top > top.log
grepを使って特定の行をフィルタリングしたいと思います。
top | grep "my_program" > top.log
ただし、ログファイルは空のままです。ただし、grepを使用すると出力が提供されます。
top | grep "my_program"
my_program
一部の出力を表示するには、実行中のプログラムに置き換える必要があります。
私の方法がうまくいかないのはなぜですか?どうすれば解決できますか?
ベストアンサー1
私はあなたが説明するのと同じ動作をします。 Ubuntu 11.10から
top | grep "my_program" > top.log
出力を生成しません。
その理由は、grepが出力をバッファリングするためだと思います。 GNU grepに出力を1行ずつ印刷するように指示するには、次の--line-buffered
オプションを使用します。
top | grep --line-buffered "my_program" > top.log
これも見てくださいだから質問は他の潜在的な解決策。