Linuxでプロセスごとのメモリ使用量を確認する方法

How Check Memory Usage Per Process Linux



最近では、コンピュータは一度に多くのプログラムを実行できます。 CPUにはマルチタスクを処理するための複数のコアがあるため、CPUはこれらすべてのプログラムを問題なく処理できます。

これらの各プログラムは、1つ以上のプロセスとして実行されます。すべてのプロセスは、それ自体にある程度のRAMまたはメモリを割り当てます。プロセスが正しく機能するために不可欠です。プロセスが十分なRAMまたはメモリを割り当てられない場合、プロセスを作成できず、プログラムを開始できません。







したがって、コンピュータで行う基本的なタスクの1つは、各プロセスが使用しているメモリまたはRAM(ランダムアクセスメモリ)の量を確認することです。なぜなら、コンピュータのRAMまたはメモリは限られているからです。



あるプログラムを実行したいのに、十分なメモリがないために失敗する場合を想像してみてください。一部のプロセスが、現在必要のない大量のメモリを使用している可能性があります。これらのプロセスを強制終了または停止して、RAMまたはメモリを解放し、重要なプログラムを開始できます。



この記事では、Linuxマシンで実行されている各プロセスのメモリ使用量を確認する方法を紹介します。この記事のすべてのデモンストレーションにはDebian9Stretchを使用します。ただし、最新のLinuxディストリビューションでは機能するはずです。始めましょう。





あなたは使用することができます ps Linux上のすべてのプロセスのメモリ使用量をチェックするコマンド。この手順には1つの問題があります。 ps プロセスが使用しているメモリの量をKBまたはMB形式で実際に表示するのではなく、使用されているメモリの量をパーセンテージで表示します。

次のコマンドを使用して、Linuxオペレーティングシステムで実行されているすべてのプロセスのメモリ使用量(パーセンテージ)を確認できます。



$ps -またpid、user、ミーム、指図| 選別 -NS -k3 -NS

ご覧のとおり、メモリ使用率がパーセンテージで示されているすべてのプロセスが降順でリストされています(ほとんどのメモリを使用しているプロセスが最初にリストされています)。

pmapを使用したプロセスのメモリ使用量の確認:

プロセスまたはプロセスのセットのメモリを、人間が読める形式(KBまたはキロバイト)で確認できます。 pmap 指図。必要なのは、メモリ使用量をチェックするプロセスのPIDだけです。

たとえば、PID917のプロセスが使用しているメモリの量を確認するとします。これを行うには、を実行します pmap 次のように:

$sudopmap917

ご覧のとおり、プロセス917で使用される合計メモリは516104KBまたはキロバイトです。また、PID917でプロセスを実行するために必要なライブラリやその他のファイルが使用しているメモリの量もここで確認できます。

ライブラリまたは他の依存ファイルが使用しているメモリの量を気にしない場合は、を実行します pmap 次のように:

$sudopmap917 | しっぽ -NS 1

ご覧のとおり、PID917のプロセスで使用された合計メモリのみが画面に印刷されます。

必要に応じて、これをさらにフィルタリングできます awk KBまたはキロバイト単位のサイズのみを取得します。これを行うには、を実行します pmap 次のように:

$sudopmap917 | しっぽ -NS 1 | awk '/ [0-9] K / {print $ 2}'

ご覧のとおり、KBまたはキロバイト単位のメモリ使用量のみが出力されます。

これで、複数のプロセスがPIDを使用して使用しているメモリの量を一覧表示することもできます。 pmap 次のように:

$sudopmap917 531 | グリップ合計

ノート: ここで、917と531はプロセスIDまたはPIDです。この方法で、必要な数のPIDを配置できます。

pmapを使用して、すべてのプロセスのメモリ使用量をキロバイト単位で一覧表示します。

このセクションでは、Linuxオペレーティングシステムで実行されているすべてのプロセスのメモリ使用量を人間が読める形式(キロバイトまたはKB)で一覧表示する独自のシェルスクリプトを作成する方法を示します。

最初に新しいファイルを作成します sysmon 次のコマンドを使用して、現在の作業ディレクトリに移動します。

$接するsysmon

次に、次のコマンドを使用してファイルを実行可能にします。

$chmod+ x sysmon

sysmon 実行中のすべてのプロセスを表示するシェルスクリプトです PIDオーナーメモリー (KBで降順)および 指図 。はじめましょう。

を開きます sysmon お気に入りのテキストエディタでスクリプトを作成します。 ケイト

さて、私が実行しようとしている最初のコマンドは私に PIDオーナー指図 コロン(:)記号で区切られた実行中のすべてのプロセスの RAWIN 変数。次に、出力をループして画面に印刷します。

ご覧のとおり、正しい出力が得られています。

次に、各行を処理し、コロンで区切られた情報を個別の変数に格納します。それが私が7、8、9行目でしたことです。

ご覧のとおり、印刷できます PIDオーナー指図 今は自分のフォーマットで。

次に、各PIDのメモリ使用量を取得します。 10行目はまさにそれを行います。

ご覧のとおり、すべてが完全に機能しています。これで、各プロセスのメモリ使用量をキロバイト(KB)単位で出力することもできます。

あとは、出力をフォーマットして見栄えを良くするだけです。私は表形式が好きです。 5行目は、テーブルの各列のヘッダーを出力します。

最後に、私は印刷しました PIDオーナーメモリー (KB単位)および 指図 14行目を使用して表形式で各プロセスの。

ご覧のとおり、それはちょっとうまく機能しています。ただし、少し問題がありますが、プロセスはメモリ使用量の降順で正しくソートされていません。

それを修正するために、私は削除しました sort -bnr -k3 3行目から、すべてをシェル関数でラップしました sysmon_main() 。その後、並べ替えの仕事をに任せました 選別 指図。

最終的なシェルスクリプトは次のようになります。

ご覧のとおり、これはうまく機能します。

今、あなたはそれを次のような場所に移動することができます / usr / bin 次のように他のコマンドと同じように実行します。

$sudo mv -vsysmon/usr/午前

実行中 sysmon

この記事を読んでくれてありがとう。