Linux
可用記憶體中的流更改
我想出了以下命令來檢查記憶體使用的變化:
free -s 1 -h | awk 'NR%4==2'
這顯示如下輸出:
Mem: 125G 32G 82G 404M 10G 91G Mem: 125G 32G 82G 404M 10G 91G Mem: 125G 32G 82G 404M 10G 92G
我實際上只對記憶體使用的變化感興趣,所以我嘗試通過管道傳遞
uniq
:free -s 1 -h | awk 'NR%4==2' | uniq
但是,當使用它時,根本不會給出任何輸出。我假設
uniq
正在等待其輸入完成,但當然它永遠不會。我在 RedHat 7.6 上
這個例子
man stdbuf
就是你要找的。它適用於您希望將流傳輸到的一般情況uniq
,類似於此。原因是uniq
需要查看更多行來決定是否應該列印目前行。EXAMPLES tail -f access.log | stdbuf -oL cut -d ' ' -f1 | uniq This will immediately display unique entries from access.log
對於您的情況:
free -s1 -h | stdbuf -oL awk 'NR%4==2' | uniq
另一種方法是使用一個
awk
命令,保存剛剛列印的行並在列印之前針對該值進行測試:free -s1 -h | awk 'NR%4 == 2 {if ($0 != p) print; p = $0}'
此外,監視命令的輸出
watch
可能很有用。