Linuxシステムに「無料」コマンドのMac OS Xターミナルバージョンはありますか?


194

Linuxでは、freeコマンドを使用して、システム内の現在の空きメモリと使用済みメモリの量を確認することがよくあります。例えば:

$ free
             total       used       free     shared    buffers     cached
Mem:       7264256    1010952    6253304          0     371892     189088
-/+ buffers/cache:     449972    6814284
Swap:      8126456         28    8126428

freeMac OS Xのターミナルに入ったときに存在しないようです。代替手段はありますか?

回答:


92

@khedronが言うように、この情報はアクティビティモニターで確認できます。

コマンドラインでそれが必要な場合は、有線、アクティブ、非アクティブ、空きメモリ量を表示するために私が書いた(またはおそらく他の誰かから変更された、覚えていない、今ではかなり古い)Pythonスクリプトがあります:

#!/usr/bin/python

import subprocess
import re

# Get process info
ps = subprocess.Popen(['ps', '-caxm', '-orss,comm'], stdout=subprocess.PIPE).communicate()[0].decode()
vm = subprocess.Popen(['vm_stat'], stdout=subprocess.PIPE).communicate()[0].decode()

# Iterate processes
processLines = ps.split('\n')
sep = re.compile('[\s]+')
rssTotal = 0 # kB
for row in range(1,len(processLines)):
    rowText = processLines[row].strip()
    rowElements = sep.split(rowText)
    try:
        rss = float(rowElements[0]) * 1024
    except:
        rss = 0 # ignore...
    rssTotal += rss

# Process vm_stat
vmLines = vm.split('\n')
sep = re.compile(':[\s]+')
vmStats = {}
for row in range(1,len(vmLines)-2):
    rowText = vmLines[row].strip()
    rowElements = sep.split(rowText)
    vmStats[(rowElements[0])] = int(rowElements[1].strip('\.')) * 4096

print 'Wired Memory:\t\t%d MB' % ( vmStats["Pages wired down"]/1024/1024 )
print('Active Memory:\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
Wired Memory:           1381 MB
Active Memory:          3053 MB
Inactive Memory:        727 MB
Free Memory:            1619 MB
Real Mem Total (ps):    3402.828 MB

(StackExchangeのタブのサイズに合わせてわずかに調整されています;)


このスクリプトを使用する最良の方法は何ですか?
iddober

2
正確な意味がわからない...コピーして新しいファイルに貼り付け、どこかに(おそらく/ usr / local / binに)保存し、実行可能にして実行しますか?
drfrogsplat

私は@idoberはあなたがそれと生成される出力を実行する例(例えば画面キャプチャ)などが示唆されたと思う
AJを。

@AJ、大丈夫、
わかった-drfrogsplat

6
ちょうど私の2セント:ps -caxm -orss= | awk '{ sum += $1 } END { print "Resident Set Size: " sum/1024 " MiB" }'
ボールト

70

必要なコマンドはvm_stat-従来のUnixツールに似ていますvmstatが、MACH固有の違いがいくつかあります。マニュアルページはよく書かれています。


2
「ページ」とは何ですか?
DilithiumMatrix

8
@zhermes-システムで使用可能なメモリの最小単位... x86およびPPC Macの場合、これは4kです。空きページは、空きメモリの4k単位の数です。
RI沼ヤンキー

2
iOSのページも4Kです。
smci 14年

54

遅い理由はtop -l 1、完了後常に標準の遅延である1秒の遅延があるためです。コマンドに-s 0を追加すると、すぐに完了します。

top -l 1 -s 0 | grep PhysMem

また、わかりやすくするために、行に各mem-componentを表示するのが好きなので、sed置換文字列の 'PhysMem:'に合わせて9つのスペースを追加しました。

top -l 1 -s 0 | grep PhysMem | sed 's/, /\n         /g'

1
それは犬が遅いです、それを利用する方がずっと良いvm_statです。
mgol

3
はい、クエリtopは呼び出しよりも大幅に遅くなりますvm_statが、top抽出の冗長性ははるかに低く、単位はメガバイトでページではありません。さらに冗長にするために、改行を削除し、結果をにawk置き換えることができます。greptop -l 1 | grep ^PhysMem
ステファンシュミット

2
すべてを考慮して、これが最良の答えです。役に立たないpageユニットで結果を出さない/ユニットを解釈可能にするためにある種のハッキング後処理を必要としない。
ijoseph

39

以下は、vm_stat出力全体をより人間に優しいものにするための簡単なワンライナーです。

$ vm_stat | perl -ne '/page size of (\d+)/ and $size=$1; /Pages\s+([^:]+)[^\d]+(\d+)/ and printf("%-16s % 16.2f Mi\n", "$1:", $2 * $size / 1048576);'
free:                     2330.23 Mi
active:                   2948.07 Mi
inactive:                 1462.97 Mi
speculative:               599.45 Mi
wired down:                840.46 Mi
copy-on-write:           43684.84 Mi
zero filled:            385865.48 Mi
reactivated:               608.14 Mi

25

スワップの使用にのみ本当に関心がある場合(からの出力の最終行は何ですかfree):

$ sysctl vm.swapusage
vm.swapusage: total = 64.00M  used = 0.00M  free = 64.00M  (encrypted)

私はそれをたくさん探していました:)
onalbi

20

freeMac OS Xに似た端末コマンドがあります...top

詳細については、このAppleサポートドキュメントをご覧ください。

Mac OS X:「トップ」ユーティリティを使用してメモリ使用量を表示する方法


24
厳密に言えば、OS Xの「トップ」は、もちろんLinuxの「トップ」コマンドにかなり似ています:)
calum_b

6
トップよりも良い:htop
nXqd

3
@nXqd htop:コマンドが見つかりません
itsazzad 14年

4
あなたはビールがインストールされていない場合@SazzadTusharKhan醸造はhtopのインストール
nXqd

2
技術的には、これらはまったく同じではありません。なぜなら、topはあなたが積極的に見ているものであるのに、無料ではコマンドラインにすてきな何かを印刷できるからです。
anon58192932

10

ただ、服用@zackからソリューションを、非アクティブと投機的なブロックを追加。

#!/bin/bash

FREE_BLOCKS=$(vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//')
INACTIVE_BLOCKS=$(vm_stat | grep inactive | awk '{ print $3 }' | sed 's/\.//')
SPECULATIVE_BLOCKS=$(vm_stat | grep speculative | awk '{ print $3 }' | sed 's/\.//')

FREE=$((($FREE_BLOCKS+SPECULATIVE_BLOCKS)*4096/1048576))
INACTIVE=$(($INACTIVE_BLOCKS*4096/1048576))
TOTAL=$((($FREE+$INACTIVE)))
echo Free:       $FREE MB
echo Inactive:   $INACTIVE MB
echo Total free: $TOTAL MB

9
#!/bin/bash
top -l 1 | grep PhysMem: | awk '{print $10}'

Unixの専門家のみ:

top -l 1 | awk '/PhysMem:/ {print $10}'

1
これにより、最新のmacOSでは結果が返されなくなりました。
マットセフトン

top -l1 | awk '/PhysMem/ {print $2}'macosでの使用> = High Sierra
JDS

使用済みのメモリを返さない
theillien

8
free="$(( $(vm_stat | awk '/free/ {gsub(/\./, "", $3); print $3}') * 4096 / 1048576)) MiB free"

1
そのコマンドの現在のエディションはtcsh(デフォルト)またはで動作しませんsh。コマンドはシェル固有ですか?
グラハムペリン

はい、それはあるbashksh特定。tcsh試してみてくださいset freeblocks=`vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//'` ; set freeMB=`expr $freeblocks \* 4096 / 1048576`; set free=`echo $freeMB MiB free`。その後echo $free、空きメモリの量を印刷することができます。エイリアスを作成することもできますalias free echo $freeMB MiB free
-jaume

7

他の質問から判断すると、アクティビティモニタユーティリティを使用してメモリステータスを確認できたと思いますか?記録のためだけに、/ Applications / Utilities / Activity Monitor.appにあります。


7

Mac OS Xで配布されているものとまったく同じものはありませんが、情報を取得する方法は他にもいくつかあります。

  1. system_profiler -シェルにMacのシステムプロファイル情報をすべて表示します
  2. sysctl -a | grep memまたはsysctl hw.memsize(合計メモリ)

+1、リカバリモードでターミナルから動作(起動中にcmd-r)
Steve Kehlet

7

allmemory非常に詳細なメモリ使用量を報告するコマンドラインツールが必要な場合は、コマンドを試してください。


1
強力なツールですが、プロセッサを集中的に使用し(MacBookPro5,2の2つのCPUの1つのうち約95%)、大量のメモリを使用する場合:単純な実行はallmemory予想外に長くなる可能性があります。 YMMV。allmemoryfor の実行にはsysdiagnoseかなり長い時間がかかる場合があります。
グラハムペリン

6

上記は私の好みにはあまりにも多くの努力であり、あなたも完全にインストールされていることを前提としています... Mac OS X起動ディスクから起動した場合、上記のすべてのソリューションは明らかに動作しません。 ..コマンド "hostinfo"を使用するだけで、Mavericks(10.9.1)を実行している2012年半ばのMBAirからの出力を次に示します。

 Mach kernel version:
 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64
Kernel configured for up to 4 processors.
2 processors are physically available.
4 processors are logically available.
Processor type: i486 (Intel 80486)
Processors active: 0 1 2 3
Primary memory available: 8.00 gigabytes
Default processor set: 195 tasks, 961 threads, 4 processors
Load average: 1.61, Mach factor: 2.38

このコマンドの優れた点は、10.9インストーラーにもプリインストールされている/usr/binことです。したがって、非常に便利です。

理想的には、RAMのみが必要な場合は、次を発行します。

$ hostinfo | grep memory

ただし、hostinfoが以前のOSに存在するかどうかはわかりません...


4
使用済みメモリはどのようにhostinfo表示されますか?
nohillsideの

3
このコマンド(少なくともここではOS 10.6.8で)は物理的に使用可能なメモリのみを表示しますが、現在使用されているメモリの量は表示しません
MostlyHarmless

つまり、「空きメモリと使用済みメモリ」を望んでいると具体的に述べているため、これは実際に尋ねられた質問には答えません。
-b4hand


3

最近はpsutil、そのmeminfo.pyスクリプトが最も役立つメモリ使用量の詳細を提供していると思います。試すには:

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

生成される出力は次のようになります。

MEMORY
------
Total      :   16.0G
Available  :    5.5G
Percent    :    65.8
Used       :   13.5G
Free       :    1.5G
Active     :    7.4G
Inactive   :    4.0G
Wired      :    2.1G

SWAP
----
Total      :    1.0G
Used       :   33.5M
Free       :  990.5M
Percent    :     3.3
Sin        :   15.9G
Sout       :   71.6M

Available行に注目してください。これは、スワップせずに、新しいアプリケーションを開始するために実際に使用可能なメモリ量を 示しています

使用可能なメモリの見積もりを提供する他のMacOSユーティリティは知りません。

比較のため:Linuxシステムではavailable、現在のバージョンの出力の列に同じ種類の情報が表示されますfree

              total        used        free      shared  buff/cache   available
Mem:           7.8G        552M        182M        156M        7.1G        6.9G
Swap:            0B          0B          0B
Total:         7.8G        552M        182M

出力のそのavailablefreeは、から来てMemAvailable/proc/meminfoます。また、があるシステムでは/proc/meminfopsutilはそれを使用して利用可能なメモリを推定するだけです。

しかし、MacOSにはない/proc/meminfoので、その場合の使用可能なメモリを推定するために、 psutilLinuxで使用されるのと同じアルゴリズムを使用してを計算MemAvailable/proc/meminfoます。


3

memory_pressureコマンドを試すことができます。システムの出力を見る(i5、4 GB RAM)

The system has 2147483648 (524288 pages with a page size of 4096).

Stats: 
Pages free: 90009 
Pages purgeable: 139593 
Pages purged: 7496548 

Swap I/O:
Swapins: 470466 
Swapouts: 530913 

Page Q counts:
Pages active: 407739 
Pages inactive: 148277 
Pages speculative: 16200 
Pages throttled: 0 
Pages wired down: 263064 

Compressor Stats:
Pages used by compressor: 122815 
Pages decompressed: 7327420 
Pages compressed: 17625795 

File I/O:
Pageins: 1538997 
Pageouts: 86692 

System-wide memory free percentage: 63%

2

Mac OSXのBashコマンドは「フリーライク」です。

これは、この投稿の2回目の再発行です。最初は2つありました-1。1つは、英語で説明していないため、修正されています。もう1つはgawk(標準のOS Xインストールの一部ではない)を使用したためawkです。これも修正され、現在はを使用しています。ザ・は-2;-)まだそこにあります。最良の方法は、おそらくコマンド自体をテストして評価することでしょうか?

フレンドリーで高度に設定可能なディスプレイを備えたエンドユーザー向けコマンドを1つだけ作成するという最初のアイデアを検討し、2つ作成しました。

  • free-like.sh スクリプトは常に「エンドユーザー」指向で、より正確で、「フレンドリー」で構成可能なディスプレイですが、より多くの計算とリソース消費があります。

  • free-like-raw.sh、コマンド指向の開発者、システム管理者など。計算量とリソース消費量は少ないが、精度も低く、「使いやすい」表示も少ない。

物理メモリのデータは、コマンド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桁、メガouギガで表示する場合は表示できます。

スクリプトは投稿するには長すぎますが、私のブログのこの記事で見つけることができます:http : //myblog.robert.sebille.name/article29.html

この記事はフランス語ですが、各コマンドとその統合ヘルプ(./free-like.sh -hおよび./free-like-raw.sh -h)の表示例が英語で表示されます。これらの補助は、コマンドを完全に説明しています。記事にはコードも表示されます。

英語は私の母国語ではありません。誰かが統合ヘルプのエラーを修正したい場合、彼は大歓迎です;)。

あなたのもの。


フランス語の知識がなくてもだれかが多かれ少なかれ使用できないことに加えてgawk、標準のOS Xインストールの一部ではないスクリプトが必要なようです。
nohillsideの

@patrix:ご意見ありがとうございます。英語で説明を行い、統合ヘルプも翻訳します(現在はフランス語)。gawk:実際、忘れてしまいました、ありがとう。awkでローカライズの問題(10進数のコンマまたは小数点)に遭遇しました。彼らは理由を知らずに姿を消した。私はgawkではなくawkに戻りました。物事を調整するには少し時間が必要でした。準備ができたら再投稿します。あなたの。
ロバート

1
単純にgawkをawkに置き換えるだけで問題なく機能しました。
nohillside

2

1
Ask Differentに関する回答は、単なるリンク以上のものである必要があります。リンクを含めることはできますが、回答に要約または抜粋してください。その答えは、答えを独立させることです。
nohillside

1

vm_stat キロバイト単位で表示します。

以下のonelinerはメガバイト単位で表示されます。

paste <(vm_stat | awk 'NR>1' | grep -o ".*:") <(for i in $(vm_stat | awk 'NR>1' | tr -d '.' | awk '{print $NF}'); do perl -e "print $i/1024" | awk '{printf "%0.2f", $0}'; echo; done) | column -s: -t

返却値:

Pages free                      11.06
Pages active                    798.25
Pages inactive                  776.03
Pages speculative               9.15
Pages throttled                 0.00
Pages wired down                303.27
Pages purgeable                 0.95
"Translation faults"            82172.66
Pages copy-on-write             11629.60
Pages zero filled               27685.41
Pages reactivated               1450.70
Pages purged                    91.66
File-backed pages               430.20
Anonymous pages                 1153.24
Pages stored in compressor      481.75
Pages occupied by compressor    149.91
Decompressions                  1277.92
Compressions                    1622.33
Pageins                         13198.02
Pageouts                        66.61
Swapins                         54.34
Swapouts                        90.63

1

場合は、osxでフィッシュシェルを使用し、フィッシャーのパッケージマネージャーを使用します。

次の拡張機能を作成しました:https : //github.com/fisherman/free

これは、osxの無料コマンドの完全なやり直しです。自分で見る

> free
                 total     used     free   appmem    wired   compressed
Mem:            8.00Gb   6.65Gb   1.95Gb   2.87Gb   2.09Gb   1.86Gb
+/- Cache:               1.24Gb   1.87Gb
Swap(43%):      2048Mb    877Mb   1171Mb
Load Avg:        1.63 1.95 1.95

いいね すぐにそれをニック。
PeterVP 16

-1

topまたはhtopは、問題の解決にも役立ちます。


別の質問へようこそ。参照するコマンドが質問にどのように答えるかについての詳細を提供してください。
tubedogg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.