以下命令返回可用內存得到GB的可用內存可以有一個人提出一個命令就獲得在GB的可用內存?
回答
只是輕微修改自己的魔法咒語:
awk '/MemFree/ { printf "%.3f \n", $2/1024/1024 }' /proc/meminfo
PS:尊敬的OP,如果你發現自己的grep調用AWK &在一行中你最有可能做是錯誤的;} ...與在單個文件上調用cat相同;這幾乎沒有保證。
freemem_in_gb() {
read -r _ freemem _ <<< "$(grep --fixed-strings 'MemFree' /proc/meminfo)"
bc <<< "scale=3;${freemem}/1024/1024"
}
請注意,scale=3
可以更改爲其他值,以獲得更好的精度。 因此,例如一個可以編寫一個函數,將採取精確的說法,就像這樣:
freemem_in_gb() {
prec=$1;
read -r _ freemem _ <<< "$(grep --fixed-strings 'MemFree' /proc/meminfo)"
bc <<< "scale=${prec:-3};${freemem}/1024/1024"
}
將採取(或使用3爲默認值),並通過精確的參數bc
的scale
選項
用例:
$ freemem_in_gb
5.524
$ freemem_in_gb 7
5.5115814
EDIT 由於對@Stephen P和@Etan Reisner留下評論並改進此答案。 代碼相應編輯。
grep
的長期選項--fixed-strings
故意用來代替-F
或fgrep
,原因是解釋性的。
使用重定向和正則表達式grep相對昂貴; OPs'cat/proc/meminfo | grep MemFree'和你的''grep'MemFree' proc/meminfo'可以用fgrep MemFree/proc/meminfo'使用更高效的「fixed」(無正則表達式)fgrep,不需要重定向以及更少的進程。 –
@EtanReisner我不這麼認爲。我錯誤地寫了它。感謝您對此發表評論。我會編輯答案。 –
它似乎沒有傷害任何東西(它似乎工作正常,這讓我覺得有點奇怪,但*聳聳肩*)我主要想知道是否有一些我不熟悉的bc細節。 –
如果你有蟒蛇,你可以這樣來做:
python -c "import os;print int(round(os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')/1024.0**3))"
在這個例子中,我用round
舍入到最接近的GB。你可以像下面這樣將它變成一個shell函數:
get_mem(){
MEM=$(python -c "import os;print int(round(os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')/1024.0**3))")
echo $MEM
}
- 1. 存儲PGT和PGTIOU CAS生成
- 2. print <<< HTML in php?
- 3. 爲什麼不使用<< EOF代替cat << EOF?
- 4. 使用<<<拋出拍的shell錯誤不是在bash
- 5. AWK <
- 6. git「<<<<<<< HEAD」
- 7. 「<<<<<<< HEAD」模板
- 8. 在bash中,<<<用於什麼?
- 9. Heredoc <<<或<<?
- 10. 使用<< END
- 11. 使用>>,>,> |,||,| <,<,<<,<<
- 12. 這是什麼算子<<< bash
- 13. << <<超載
- 14. operator <<:std :: cout << i <<(i << 1);
- 15. 獲得的/ dev/null的:</p> <pre><code>find . -name "*.jar" -exec bash -c 'jar -tf {} |grep -H --label {} GenericClassLoader' \; </code></pre> <p>但我:在UNIX
- 16. 字節<0xC0字節<0x80
- 17. github增加<<<<<<< HEAD
- 18. Bash意外標記附近<<<這裏文檔
- 19. 命令行在shell腳本的<< EOF中引用?
- 20. 的Rails搞亂我的代碼以「<<<<<<< HEAD」
- 21. Bash雙重定向(<< ==)的含義?
- 22. 'std :: operator <<'operator <<'不匹配'std :: operator <<
- 23. print << EOF in perl-要打印$
- 24. bash腳本解析下面</p> <pre><code># sha512sum /home/bin.tar </code></pre> <p>命令
- 25. Python的文件內容 <p>two.py</p> <pre><code>if any(data): print data validate() random() </code></pre> <p>結果:</p> <pre><code>if any(data): print data print data validate() random() </code></pre> <p>是可能</p>
- 26. 什麼是我的檔案中的「<<<<<<< head」?
- 27. Fortran-有關命令<<write>>
- 28. vim - remapping >><<(縮進命令)
- 29. 怎麼了SVN把「<<<<<<<.mine」遍佈整個地方?
- 30. 什麼意思的符號在java中「<<<」「<< =」「<<」
Ooops ...胖手指:) – tink
這比我的回答好得多,應該是公認的解決方案。 –
全部好@RanyAlbegWein =} ... – tink