Procは仮想ファイルシステムであり、Linuxシステムの/ procディレクトリにマウントされます。Procには、ユーザーがカーネル情報にアクセスしたり、トラブルシューティングに使用したりできるなど、複数の機能があります。Linuxの非常に便利な機能の1つであり、より特別な機能は、テキストストリームの形式でプロセス情報にアクセスすることです。多くのLinuxコマンド(ps、toPpstreeなど)は、このファイルシステム情報を使用する必要があります。/ procファイルシステムでは、各プロセスに対応するフォルダー/ proc / pidがあり、このフォルダーにプロセスに関する情報が表示されます。
コマンドライン
/proc/[pid]/cmdline
これは、プロセスの完全なコマンドライン情報を含む読み取り専用ファイルです。プロセスがプロセスの場合、zombie
このファイルにはコンテンツがありません。
通信
/proc/[pid]/comm
プロセスのコマンド名を含む読み取り専用ファイルです。
cwd
/proc/[pid]/cwd
これは、プロセスの現在の作業ディレクトリへのシンボリックリンクです。
約
/proc/[pid]/environ
プロセスの環境変数を表示します。
EXE
/proc/[pid]/exe
実際に実行されているプログラムのシンボリックリンク。
fd
/proc/[pid]/fd
プロセスによって開かれたファイルのステータスを含むディレクトリです。
ディレクトリ内の各項目は、開いているファイルを指すシンボリックリンクであり、番号はファイル記述子を表します。
レイテンシー
/proc/[pid]/latency
どのコードがより大きな遅延を引き起こすかを示します(これを使用するにはfeature
、 " echo 1 > /proc/sys/kernel/latencytop
"を実行する必要があります)。例は次のとおりです。
# cat /proc/2948/latency
Latency Top version : v0.1
30667 10650491 4891 poll_schedule_timeout do_sys_poll SyS_poll system_call_fastpath 0x7f636573dc1d
8 105 44 futex_wait_queue_me futex_wait do_futex SyS_futex system_call_fastpath 0x7f6365a167bc
各行の最初の3つの数値は、次のコードの実行数、合計実行遅延時間(マイクロ秒単位)、最長実行遅延時間(マイクロ秒単位)であり、その後にコードの完全な呼び出しスタックが続きます。
制限
/proc/[pid]/limits
現在のプロセスのリソース制限を表示します。例は次のとおりです。
# cat /proc/2948/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 6409 6409 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 6409 6409 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Soft Limit
表しkernel
、リソースに設定された値をHard Limit
表し、Soft Limit
上限、及びUnits
測定単位であります
マップ
/proc/[pid]/maps
プロセスのメモリ領域マッピング情報を表示します。例は次のとおりです。
# cat /proc/2948/maps
......
address perms offset dev inode pathname
7f4a2e2ad000-7f4a2e2ae000 rw-p 00006000 08:14 6505977 /usr/lib64/sasl2/libsasldb.so.3.0.0
7f4a2e2ae000-7f4a2e2af000 ---p 00000000 00:00 0
7f4a2e2af000-7f4a2eaaf000 rw-p 00000000 00:00 0 [stack:94671]
7f4a2eaaf000-7f4a2eab0000 ---p 00000000 00:00 0
7f4a2eab0000-7f4a2f2b0000 rw-p 00000000 00:00 0 [stack:94670]
......
7f4a434d0000-7f4a434d5000 rw-p 0006e000 08:14 4292988 /usr/sbin/libvirtd
7f4a4520a000-7f4a452f7000 rw-p 00000000 00:00 0 [heap]
7ffd1a7e4000-7ffd1a805000 rw-p 00000000 00:00 0 [stack]
7ffd1a820000-7ffd1a821000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
注意すべきことの1つは[stack:<tid>]
、/proc/[pid]/task/[tid]/
パスに対応するスレッドのスタック情報です。
ルート
/proc/[pid]/root
これは、プロセスのルートディレクトリへのシンボリックリンクです。
スタック
/proc/[pid]/stack
現在のプロセスのカーネル呼び出しスタック情報を表示しますCONFIG_STACKTRACE
。このファイルは、カーネルのコンパイル時にコンパイルオプションがオンになっている場合にのみ生成されます。例は次のとおりです。
# cat /proc/2948/stack
[<ffffffff80168375>] poll_schedule_timeout+0x45/0x60
[<ffffffff8016994d>] do_sys_poll+0x49d/0x550
[<ffffffff80169abd>] SyS_poll+0x5d/0xf0
[<ffffffff804c16e7>] system_call_fastpath+0x16/0x1b
[<00007f4a41ff2c1d>] 0x7f4a41ff2c1d
[<ffffffffffffffff>] 0xffffffffffffffff
statm
/proc/[pid]/statm
プロセスが占有するメモリサイズの統計を7つの値を含めて表示します。測定単位はですpage
(page
サイズはからgetconf PAGESIZE
取得できます)。例は次のとおりです。
# cat /proc/2948/statm
72362 12945 4876 569 0 24665 0
各値の意味:
a)プロセスによって占有されている合計メモリ;
b)現時点でプロセスによって占有されている物理メモリ;
c)他のプロセスと共有されているメモリ;
d)プロセスのコードセグメント;
e)共有ライブラリ(2.6
バージョン以降、この値は0
);
f)プロセスのスタック;
g)dirty pages
(2.6
バージョン以降、この値は0
)。
システムコール
/proc/[pid]/syscall
現在のプロセスによって実行されているシステムコールを表示します。例は次のとおりです。
# cat /proc/2948/syscall
7 0x7f4a452cbe70 0xb 0x1388 0xffffffffffdff000 0x7f4a4274a750 0x0 0x7ffd1a8033f0 0x7f4a41ff2c1d
最初の値はシステムコール番号(7
代表poll
)であり、その後に6
システムコールのパラメーター値(レジスターにあります)が続き、最後の2つの値はスタックポインターと命令カウンターの値です。 。現在のプロセスがブロックされているが、ブロック機能がシステムコールではない場合、システムコール番号の値の-1
後に、スタックポインタと命令カウンタの値が続きます。プロセスがブロックされていない場合、このファイルには「running
」の文字列のみが含まれます。
CONFIG_HAVE_ARCH_TRACEHOOK
このファイルは、カーネルのコンパイル時にコンパイルオプションがオンになっている場合に生成されます。
wchan
/proc/[pid]/wchan
プロセスが表示されているsleep
場合、kernel
現在実行中の関数。