/proc/[pid]/environ を見てプロセスの環境変数を確認した時のメモ
どうやってプロセスの環境変数を確認するのか
/proc/[pid]/environ
というファイルを確認する事で確認出来るようなのでこちらを見てみる。
/proc/[pid]/environ
This file contains the initial environment that was set when the currently executing program was started via execve(2).
The entries are separated by null bytes ('\0'), and there may be a null byte at the end. Thus, to print out the environment of process 1, you would do:
$ cat /proc/1/environ | tr '\000' '\n'
やってみる
docker ではこんな感じで環境変数を設定できるのでこれを利用して確認。
$docker run -e "deep=purple" --rm alpine env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=d24d530dff8b
deep=purple
HOME=/root
では実際にやってみる。
/proc
を使って確認してみる。
# deep=purple という環境変数を設定してコンテナ(プロセス)を起動
$docker run -e "deep=purple" -d alpine sleep 10000
a4868f4b60d7fb3df4ab3c8aad11f75c3a5c144db61f5692981629c7ef8b745d
# PID を確認
$docker inspect a4868f4b60d7fb3df4ab3c8aad11f75c3a5c144db61f5692981629c7ef8b745d |grep Pid
"Pid": 30787,
"PidMode": "",
"PidsLimit": 0,
# 設定した環境変数が確認出来る
$sudo cat /proc/30787/environ | tr '\000' '\n'
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=a4868f4b60d7
deep=purple
HOME=/root
便利。
コンテナでなくても ps
コマンドなどで PID を特定し、環境変数を確認する事ができそう。
/proc/[pid]/
配下はプロセスの様々な情報が確認できそう。