私たちは皆、top
コマンドが実行中のプロセスを継続的に監視していることを知っています。組み込みLinuxで継続的に実行されているアプリケーションがあり、コマンドを介して対応する仮想ストレージサイズ(VSZ)値を監視する必要があります。top
つまり、アプリケーションの実行中に毎時間VSZ値を取得して記録します(デフォルトでは少なくとも最初に値を取得してください)。この場合、VSZ値を取得する方法は? C / C ++、bash、または他の方法で可能ですか?よろしくお願いします。
答え1
/proc/[PID]/stat
Linuxカーネルでは、(で定義されている)を参照できます/usr/src/linux/fs/proc/array.c
。これには複数のフィールドが含まれており、23番目はバイト単位の仮想メモリサイズです(参考文献を参照man proc
)。
/proc/[PID]/statm
または、ページのメモリの値のみを含めるか、人間が読みやすい値のみを含む値を使用することもできます/proc/[PID]/status
。
これらの情報はすべてで詳しく説明されていますman proc
。
cat
このファイルを表示するには、コマンドを使用してください。
答え2
ps -eo vsz,comm
VSZとコマンド値を一覧表示できます。その後、次のようにサブルーチン(シェルスクリプト)に結合できます。
while true
do
ps -eo vsz,comm | grep process-i-want >> /path/to/output
sleep 1
done
出力を表示して記録するには、に置き換えることもできます>> /path/to/output
。| tee /path/to/output