たとえば、ここで説明します。
free -mコマンドで使用されている個々のメモリ情報を取得します。
free
コマンドの出力を切り取る方法。しかし、数秒ごとに実行してファイルに記録したいと思います。だから私は次のことを試みます:
free -g -s2 | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p' >> memory2.log
しかし、ファイルはまだ空です。なぜこれが起こり、どのように解決するのですか?
ベストアンサー1
これは、私が知っている限り、入力がsed
最初にバッファリングされ、コマンドが終了しないために追加された部分(>>
)に到達できないために発生します。この問題を解決するには-u
/--unbuffered
フラグを使用してくださいsed
。
free -g -s2 | sed -u -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p' >> memory2.log
別の解決策はwhile
ループを使用することです。
while true; do free -g | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p'; sleep 1; done >> memory2.log
役に立ったことを願っています:)