プロセスの仮想ストレージサイズを継続的に取得するには?

プロセスの仮想ストレージサイズを継続的に取得するには?

私たちは皆、topコマンドが実行中のプロセスを継続的に監視していることを知っています。組み込みLinuxで継続的に実行されているアプリケーションがあり、コマンドを介して対応する仮想ストレージサイズ(VSZ)値を監視する必要があります。topつまり、アプリケーションの実行中に毎時間VSZ値を取得して記録します(デフォルトでは少なくとも最初に値を取得してください)。この場合、VSZ値を取得する方法は? C / C ++、bash、または他の方法で可能ですか?よろしくお願いします。

答え1

/proc/[PID]/statLinuxカーネルでは、(で定義されている)を参照できます/usr/src/linux/fs/proc/array.c。これには複数のフィールドが含まれており、23番目はバイト単位の仮想メモリサイズです(参考文献を参照man proc)。

/proc/[PID]/statmまたは、ページのメモリの値のみを含めるか、人間が読みやすい値のみを含む値を使用することもできます/proc/[PID]/status

これらの情報はすべてで詳しく説明されていますman proc

catこのファイルを表示するには、コマンドを使用してください。

答え2

ps -eo vsz,commVSZとコマンド値を一覧表示できます。その後、次のようにサブルーチン(シェルスクリプト)に結合できます。

while true
do
    ps -eo vsz,comm | grep process-i-want >> /path/to/output
    sleep 1
done

出力を表示して記録するには、に置き換えることもできます>> /path/to/output| tee /path/to/output

関連情報