Ubuntuでプログラムが使用しているメモリを確認するには?

Ubuntuでプログラムが使用しているメモリを確認するには?

アプリケーションで使用されている生のメモリデータを表示するには?たとえば、ファイル名がsomething.sh。ここで、コマンドを実行し./something.shてからRAMからアクセスするすべてのデータと、私のファイルシステム、ネットワークデータ、または使用している接続からアクセスするすべてのファイルを表示したいと思います。アプリケーションで使用されているメモリの16進ダンプである可能性があります。 Ubuntuでできますか?

答え1

アプリケーションで使用される生のメモリデータを表示する方法...

プロセスのPIDを取得すると(次を使用して)ps(1)またはpidof(8)たとえば、/proc/PID/maps仮想アドレス空間のデータを使用してアクセスできます/proc/PID/memGilesはここに非常に詳細な答えを書きました。

...そして、私のファイルシステム、ネットワークデータ、または接続からアクセスするすべてのファイル

lsofそれはすべてです。netstatネットワーク関連記述子に適している可能性があります。たとえば、

$ netstat -tln    # TCP connections, listening, don't resolve names.
$ netstat -uln    # UDP endpoints, listening, don't resolve names.
$ netstat -tuan   # TCP and UDP, all sorts, don't resolve names.
$ lsof -p PID     # "Files" opened by process PID.

ノートnetstatスイッチ-pを使用すると、各行(少なくともユーザーの行)に関連するプロセスを印刷できます。特定のプロセスを選択するには、次のようにしますgrep

$ netstat -tlnp | grep skype    # TCP, listening, don't resolve (Skype).

これらのツールに関する追加情報:netstat(8)そしてlsof(8)。また見なさい:proc(5) (そして他の答えで言及されたツール)

答え2

部分的な答え:

以下を使用して、リアルタイムでアクセスするファイルを表示できます。

strace something.sh

具体的には、プロセスで実行されたすべてのシステムコールを表示します。

答え3

/procこの情報は仮想ファイルシステム(Linuxでのみ)から入手できます。

プロセスの実行中にこのコマンドを実行してみてください(<pid>観察されたプロセスのPIDに置き換えます)。

grep 'VmSize' /proc/<pid>/status 

この情報を取得するには、プロセスへの読み取りアクセス権が必要です(所有していない場合はアクセスできません)。

提供されたすべての情報を理解するには/proc/<pid>/status:

cat /proc/self/status

答え4

最小限の情報にのみ興味がある場合は、端末にsudo gnome-system-monitorと入力してください。プロセスをクリックします。

関連情報