題:
Linux系統中是否有Mac OS X Terminal的“免費”命令版本?
hpy
2010-11-24 03:08:40 UTC
view on stackexchange narkive permalink

在Linux上,我經常使用 free命令查看系統中可用內存和已用內存的當前數量。例如:

  $可用的可用共享緩衝區已緩存的總空閒可用內存總數:7264256 1010952 6253304 0 371892 189088-/ +緩衝區/緩存:449972 6814284交換:8126456 28 8126428  

當我在Mac OS X的Terminal中輸入 free 時,似乎不存在。有其他選擇嗎?

21 答案:
drfrogsplat
2010-11-24 08:18:40 UTC
view on stackexchange narkive permalink

就像@khedron所說的,您可以在“活動監視器”中看到此信息。

如果要在命令行中使用,這是我編寫的Python腳本(或也許是從其他人那裡修改而來的,我不記得了,它已經很老了),向您展示Wired,Active,Inactive和Free內存量:

 #!/ usr / bin / pythonimport subprocessimport re#獲取流程信息= subprocess.Popen(['ps','-caxm','-orss,comm'],stdout = subprocess.PIPE).communicate()[0] .decode()vm = subprocess.Popen (['vm_stat'],stdout = subprocess.PIPE).communicate()[0] .decode()#迭代進程processLines = ps.split('\ n')sep = re.compile('[\ s] +' )rssTotal = 0#kB用於範圍(1,len(processLines))中的行:rowText = processLines [row] .strip()rowElements = sep.split(rowText)嘗試:rss = float(rowElements [0])* 1024除:rss = 0#忽略... rssTotal + = rss#處理vm_statvmLines = vm.split('\ n')sep = re.compile(':[\ s] +')vmStats = {}用於範圍內的行( 1,len(vmLines)-2):rowText = vmLine s [row] .strip()rowElements = sep.split(rowText)vmStats [(rowElements [0])] = int(rowElements [1] .strip('\。'))* 4096print'有線內存:\ t \ t%d MB'%(vmStats [“ Pages down down”] / 1024/1024)print('活動內存:\ t \ t%d MB'%(vmStats [“ Pages active”] / 1024/1024))print ('Inactive Memory:\ t%d MB'%(vmStats [“ Pages inactive”] / 1024/1024))print('Free Memory:\ t \ t%d MB'%(vmStats [“ Pages free”] / 1024/1024))print('Real Mem Total(ps):\ t%.3f MB'%(rssTotal / 1024/1024)) 

您可以看到,從命令行調用 vm_stat ,儘管它計數為4kB頁,因此該腳本將轉換為MB。

該腳本還計算了所有正在運行的“實際內存”使用情況比較過程(由於內存是一個複雜的野獸,因此不匹配整體內存統計信息中的任何特定值)。


這是我係統上腳本輸出的一個示例:

  [user @ host:〜]%memReport.py有線內存:1381 MB
活動內存:3053 MB非活動內存:727 MB可用內存:1619 MB實際總內存(ps):3402.828 MB  

(已進行了很小的調整,以匹配StackExchange上的選項卡大小;)

它使人難以置信,人們必須編寫腳本才能在Mac上獲得此基本信息
@meyerson,我認為這有點誇張了,您沒有*必須*編寫腳本來獲取此信息,該腳本只是以一種人類可讀的格式將一組有趣的信息整理在一起,有點類似於特定於Linux的“免費”命令。'vm_stat'和'top'已經為您提供了基本信息。
只是我的2美分:`ps -caxm -orss = |awk'{sum + = $ 1} END {打印“居民集大小:“ sum / 1024” MiB“}'`
什麼是有線存儲器?
@Ciastopiekarz https: // apple.stackexchange.com / q / 31801/1587
哇。這是倒退。他們不妨刪除終端應用程序。
RI Swamp Yankee
2012-04-30 22:00:02 UTC
view on stackexchange narkive permalink

您需要的命令是 vm_stat -與傳統的Unix工具 vmstat 類似,但有一些特定於MACH的差異。手冊頁寫得很好。

什麼是“頁面”?
@zhermes-系統可使用的最小內存單元...對於x86和PPC Mac,這是4k。可用頁數是4k單位可用內存的數量。
在iOS中,頁面也是4K。
但是我們需要字節,MB,GB,TB ...此命令似乎沒有用。
linus
2012-03-29 22:48:55 UTC
view on stackexchange narkive permalink

它之所以變慢,似乎是因為 top -l 1 總是在完成後延遲一秒鐘,這是刷新之間的標準延遲。在命令中添加-s 0使其立即完成:

  top -l 1 -s 0 | grep PhysMem  

另外,為了清楚起見,我喜歡在其行上顯示每個mem組件,因此我在sed替換字符串中添加了9個空格以與'PhysMem:'對齊:

  top -l 1 -s 0 | grep PhysMem | sed's /,/ \ n / g' 
這太慢了,使用`vm_stat`更好。
是的,查詢“ top”比調用“ vm_stat”要慢得多,但“ top”提取的詳細程度要低得多,單位是兆字節而不是頁面。更不用說了,可以刪除換行符,並用`grep`代替`awk`,從而導致`top -l 1 |。 grep ^ PhysMem`。
考慮所有事情,這是最好的答案。不會在無用的“頁面”單元中產生結果/需要某種駭人聽聞的後處理才能使所述單元可解釋。
Lloeki
2013-06-18 13:31:00 UTC
view on stackexchange narkive permalink

這是一個簡單的方法,可以使整個 vm_stat 輸出更加人性化:

  $ vm_stat | perl -ne'/頁面大小為(\ d +)/和$ size = $ 1; / Pages \ s +([[^:] +)[^ \ d] +(\ d +)/和printf(“%-16s%16.2f Mi \ n”,“ $ 1:”,$ 2 * $ size / 1048576); '免費:2330.23故障:2948.07故障:1462.97故障:599.45故障:840.46寫入時復制:43684.84零填充:385865.48失誤:608.14 Mi  
rymo
2013-11-13 23:33:36 UTC
view on stackexchange narkive permalink

如果您只真正對交換使用感興趣(什麼是 free 的輸出的最後一行):

  $ sysctl vm.swapusagevm。交換:總計=已使用64.00M = 0.00M可用= 64.00M(已加密) 
z4mba
2011-07-28 22:43:35 UTC
view on stackexchange narkive permalink

在Mac OS X上有一個類似於 free 的終端命令...它稱為 top

有關更多信息,您可以簽出此Apple支持文檔。

Mac OS X:如何使用“ top”實用程序查看內存使用情況

bajceta
2012-04-10 17:24:26 UTC
view on stackexchange narkive permalink

只需從@zack中獲取解決方案,並添加非活動和推測性塊。

 #!/ bin / bashFREE_BLOCKS = $(vm_stat | grep free | awk' {print $ 3}'| sed's /\.//')INACTIVE_BLOCKS = $(vm_stat | grep無效| awk'{print $ 3}'| sed's /\.//')SPECULATIVE_BLOCKS = $(vm_stat | grep投機性| awk'{print $ 3}'| sed's /\.//')FREE = $(((($ FREE_BLOCKS + SPECULATIVE_BLOCKS)** 4096/1048576))INACTIVE = $((($ INACTIVE_BLOCKS * 4096/1048576))) TOTAL = $((((($ FREE + $ INACTIVE)))echo free:$ FREE MBecho inactive:$ INACTIVE MBecho Total free:$ TOTAL MB  
Zack
2011-07-28 21:45:08 UTC
view on stackexchange narkive permalink
  free =“ $(($(vm_stat | awk'/ free / {gsub(/\./,”“,$ 3);打印$ 3}')* 4096/1048576))MiB free”  
該命令的當前版本不適用於tcsh(默認設置)或sh。該命令是否特定於Shell?
是的,它特定於`bash`和`ksh`。在`tcsh`中嘗試:`set freeblocks = \`vm_stat | grep免費| awk'{print $ 3}'| sed's / \ .//'\`;設置freeMB = \`expr $ freeblocks \ * 4096/1048576 \`;設置free = \ echo $ freeMB MiB free \``。然後,您可以執行“ echo $ free”來打印可用內存量。您還可以創建一個別名:`alias free echo $ freeMB MiB free`。
Killinks
2012-02-17 17:18:15 UTC
view on stackexchange narkive permalink
 #!/ bin / bashtop -l 1 | grep PhysMem: awk'{print $ 10}' 

僅適用於Unix專家:

  top -l 1 | awk'/ PhysMem:/ {print $ 10}' 
在現代macOS中,這不再返回任何結果。
使用`top -l1 |在macOS> = High Sierra上awk'/ PhysMem / {print $ 2}'`
不返回已用內存
TrinitronX
2013-12-04 06:13:50 UTC
view on stackexchange narkive permalink

Mac OS X並沒有完全相同的版本,但是還有其他幾種獲取信息的方法:

  1. system_profiler -在外殼中顯示所有Mac的系統配置文件信息
  2. sysctl -a | grep mem sysctl hw.memsize (總mem)
  3. ol>
+1,在“恢復”模式下從終端工作(啟動過程中使用Command-r)
João Henrique
2016-05-20 04:20:07 UTC
view on stackexchange narkive permalink

您可以嘗試使用 memory_pressure 命令。 查看系統輸出(i5,4 GB RAM)

 系統具有2147483648(524288頁,頁面大小為4096)。

統計:
無頁面數:90009
可清除的頁面:139593
清除的頁面數:7496548

交換I / O:
斯瓦平人:470466
掉期:530913

頁面Q計數:
活動頁面:407739
無效頁面:148277
投機頁面:16200
節流的頁面數:0
向下佈線的頁面數:263064

壓縮機統計信息:
壓縮機使用的頁面數:122815
解壓縮後的頁面數:7327420
壓縮頁面數:17625795

文件I / O:
佩金斯:1538997
頁面輸出:86692

系統範圍內的可用內存百分比:63%
 
這幾乎正是我想要的:一種查看系統內存壓力的方法。它不像活動監視器上顯示的壓力圖那樣容易/簡單,但是這是迄今為止我在Terminal上可以找到的最好的。
Michael H.
2010-11-24 04:43:05 UTC
view on stackexchange narkive permalink

從您的其他問題來看,我認為您已經找到了使用“活動監視器”實用程序查看內存狀態的方法,對嗎?僅作記錄,它在/ Applications / Utilities / Activity Monitor.app中。

AlanGBaker
2011-07-23 04:50:57 UTC
view on stackexchange narkive permalink

如果要使用命令行工具報告非常詳細的內存使用情況,則可以嘗試使用 allmemory 命令。

一個功能強大的工具,但是它佔用大量處理器資源(大約是MacBookPro5,2中兩個CPU之一的95%),並且如果使用了大量內存:簡單運行`allmemory'可能會出乎意料的長-對於我來說,今天超過了四分鐘每次運行,YMMV。為“ sysdiagnose”運行“ allmemory”可能需要更長的時間。
hairbear...
2014-01-28 06:18:15 UTC
view on stackexchange narkive permalink

以上是我喜歡的太多工作,並且假設您也已經完成了完整的安裝...如果您是從Mac OS X啟動磁盤啟動的,那麼上述所有解決方案顯然都不會成功。正常工作...只需使用命令“ hostinfo”,這是我2012年中運行Mavericks(10.9.1)的MBAir的輸出:

  Mach內核版本:Darwin Kernel版本13.0.0: 2013年9月19日星期四22:22:27 root:xnu-2422.1.72〜6 / RELEASE_X86_64最多可配置4個處理器的內核2個處理器在物理上可用4個處理器在邏輯上可用處理器類型:i486(Intel 80486)處理器處於活動狀態:0 1 2 3主內存可用:8.00 GB默認處理器集:195個任務,961個線程,4個處理器平均負載:1.61,馬赫數:2.38  

此命令的優點是它也預裝了10.9安裝程序,位於下/ usr / bin ,因此非常方便,

理想情況下,如果您只想要RAM,則發出:

  $ hostinfo | grep內存 

雖然不知道hostinfo是否在以前的任何操作系統上都存在...

hostinfo如何顯示“已用”內存?
此命令(至少在OS 10.6.8中為此命令)僅顯示物理上可用的內存,但不顯示當前使用了多少內存
這意味著它實際上並沒有回答所提出的問題,因為它特別聲明它希望獲得“可用的內存”。
Bijur Vallark
2015-10-27 10:33:25 UTC
view on stackexchange narkive permalink
  top -l 1 -s 0 |awk'/ Processes / ||/ PhysMem / ||/ Load Avg / {print}' 

這應該很好:)

sideshowbarker
2017-02-01 19:41:10 UTC
view on stackexchange narkive permalink

我認為這些天來, psutil 及其 meminfo.py 腳本提供了最有用的內存使用方式細節。嘗試一下:

  pip install psutil
curl -O https://raw.githubusercontent.com/giampaolo/psutil/master/scripts/meminfo.py
python ./meminfo.py
 

它產生的輸出如下:

  MEMORY
------
總計:16.0G
可用:5.5G
百分比:65.8
二手:13.5G
免費:1.5G
運作中:7.4G
閒置:4.0G
有線的:2.1G

交換
----
總計:1.0G
二手:33.5M
免費:990.5M
百分比:3.3
罪惡:15.9G
出口:71.6M
 

請注意 Available 行,該行顯示了的估算值,無需交換即可實際啟動新應用程序可用的內存量。

我不知道其他任何提供可用內存估計的MacOS實用程序。

為了進行比較:在Linux系統上, free 當前版本的輸出中的 available 列中提供了相同類型的信息:

 可用總可用免費共享buff /緩存
內存:7.8G 552M 182M 156M 7.1G 6.9G
掉期:0B 0B 0B
總計:7.8G 552M 182M
 

免費輸出中的可用列僅來自 / proc / meminfo 中的 MemAvailable 。在具有 / proc / meminfo 的系統上, psutil也僅使用它來估計可用內存。

但是MacOS沒有 / proc / meminfo ,因此要估算這種情況下的可用內存, psutil採用與Linux上相同的算法為 / proc / meminfo 計算 MemAvailable

vigo
2012-01-28 01:23:26 UTC
view on stackexchange narkive permalink

這在我的$ PS1上運行:

https://github.com/vigo/dotfiles-universal/blob/master/prompts/free_memory

(Ruby版本: https://github.com/vigo/dotfiles-universal/blob/master/prompts%2Ffree_memory.rb

關於“與眾不同”的答案不僅需要鏈接。可以包含鏈接,但請在答案中進行總結或摘錄。這個想法是使答案獨立存在。
Robert
2013-05-12 01:54:37 UTC
view on stackexchange narkive permalink

對於Mac OSX,bash命令“免費喜歡”。

這是該博文的第二次重發。一開始,我有兩個 -1 。一種是因為我沒有用英語描述,所以已將其更正。另一個原因是我使用了 gawk (這不是標準OS X安裝的一部分),因此也已得到糾正,因此我現在使用了 awk -2 仍然在那裡;-)。最好的辦法也許就是現在來測試和評估其本身的命令嗎?

我回顧了我的第一個想法,即只構建一個以友好和高度可配置的顯示方式面向最終用戶的命令,我做了兩個:

  • free-like.sh 始終面向“最終用戶”的腳本,具有更高的準確性,“友好的”和可配置的顯示,但具有更多的計算和資源消耗,

  • free-like-raw.sh ,現在是面向開發人員,sysadmin等的命令,具有較少的計算量和資源消耗,但是

物理內存的數據是從命令 vm_stat 的結果中提取的(其中以塊大小返回結果)。轉換產生的字節數不精確(number_of_blocks * block_size,計算的默認值)將在塊大小的0 <之間。虛擬內存的數據取自 top 命令。這裡的不精確度與 top 命令的參考單位有關:千,兆,兆。

使用 awk 進行計算時要考慮四捨五入(與 bc 相對)。 awk 也比 bc 快。您可以在此處查看測試腳本: http://myblog.robert.sebille.name/article29.html#awk- bc

對於free-like.sh,您可以查看命令的結果(以字節為單位)(默認),以千,兆或千兆為單位,帶有x小數位,如果您詢問以兆歐千兆顯示。

腳本的篇幅太長,但您可以在我的博客文章中找到它們: http://myblog.robert.sebille.name/article29.html

本文為法文,但顯示了每個命令及其集成幫助的顯示示例( ./ free-like.sh -h ./ free-like- raw.sh -h ),以英語顯示。這些幫助完全描述了命令。該文章還顯示代碼。

英語不是我的母語。如果有人要糾正集成幫助中的錯誤,歡迎您;)。

您的用戶。

除了對法語一無所知的人幾乎無法使用之外,您的腳本似乎還需要“ gawk”,這不是標準OS X安裝的一部分。
@patrix:謝謝您的反饋我將用英語進行描述,我也將翻譯集成的幫助(當前為法語)。gawk:實際上,我忘了謝謝。我遇到了一些本地化問題(小數逗號或小數點), w他們不知道為什麼消失了。我回到awk而不是gawk。我需要一些時間來調整一下內容,準備就緒後會重新發布。
用awk代替gawk對我毫無問題。
rubynorails
2015-11-22 01:41:34 UTC
view on stackexchange narkive permalink

vm_stat 以千字節為單位顯示。

下面的單行以兆字節為單位顯示:

 粘貼<(vm_stat | awk'NR>1'| grep -o“。*:”)<(用於$(vm_stat | awk'NR>1'| tr -d'。'| awk'{print $ NF}')中的i);執行perl -e“ print $ i / 1024 “ | awk'{printf”%0.2f“,$ 0}';回顯;完成)|列-s:-t  

返回:

 可用頁面數11.06有效頁面數798.25非活動頁面776.03可推測的頁面數9.15受限制的頁面數0.00向下佈線的頁面數303.27可清除的頁面數0.95“翻譯錯誤” 82172.66Pages寫入時復制11629.60Pages零填充27685.41Pages已重新激活1450.70Pages清除了91.66由文件支持的頁面430.20匿名頁面1153.24Pages存儲在壓縮機中481.75Pages被壓縮機149.91佔用的壓縮量1277.92Compressions 1622.61Pageinsouts 13的佔位率。 54.34掉期90.63  
Olivier Refalo
2016-12-23 04:41:41 UTC
view on stackexchange narkive permalink

如果您在osx上使用fishshell以及fisher的軟件包管理器,則為

我寫了以下擴展名: https://github.com/fisherman/free

這是osx的free命令的完整重做。自己看看

  >免費
                 總共使用了免費的appmem有線壓縮
內存:8.00Gb 6.65Gb 1.95Gb 2.87Gb 2.09Gb 1.86Gb
+/-緩存:1.24Gb 1.87Gb
掉期(43%):2048Mb 877Mb 1171Mb
平均負載:1.63 1.95 1.95
 
真好立即刻痕。
Dai Kaixian
2016-09-22 07:42:12 UTC
view on stackexchange narkive permalink

top或htop也可以幫助解決問題。

歡迎詢問不同。請提供有關您引用的命令如何回答問題的更多信息。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...