数秒ごとにfreeコマンドでのみ使用されたメモリを取得します。

数秒ごとにfreeコマンドでのみ使用されたメモリを取得します。

たとえば、ここで説明します。

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

役に立ったことを願っています:)

おすすめ記事