プロセスの環境変数を確認する方法まとめ

2017/06/08

プロセスの環境変数を確認する方法が複数あるのでまとめる。

strings

確認したいプロセスのプロセスIDがわかっているときは、バイナリファイルやデータファイルでも表示可能な文字列を表示できるstringsを使うのが一番簡潔。
環境変数は/proc/[PID]/environに記載されているが、各環境変数はnull文字(\0)で区切られているため、単純にcatするだけでは一行で出力されてしまい見づらい。

stringsを使うとnull文字で区切って表示してくれる。

ps eオプション

確認したいプロセスのプロセスIDがまだわかっていないとき、プロセスIDを調べるためにpsコマンドを打つとすると、合わせてeオプションを指定すると環境変数が表示される。ただし、/proc/[pid]/environが自ユーザで起動しているプロセスのものでなければ、rootユーザでないと開けないのと同様に、rootでpsを行うか、sudoしないとeオプションをつけても環境変数が表示されない。
よく使うオプションの組み合わせとしてps auxがあるが、これに加えてps auxeが見やすい。
以下の例はヘッダと先ほどから使っているプロセスID4186のみを表示するため、パイプ以降が複雑になっているが、パイプ以前のコマンドのみでも起動プロセス数が少なければ十分見やすい。

スペース区切りでコマンドの後ろに環境変数が表示されるため、閲覧はしやすいが、結果の再利用はしづらい。

sed

確認したいプロセスIDがわかっているとき、stringsが一番簡潔に書けるのは一番初めに示したが、sedでnull文字を置換してあげても同様の結果が得られる。sedでnull文字は\x0と書く。

tr

sedと同じ考えでtrで実施する。trでnull文字は\0と書く。

od

odを紹介しているサイトがあったが、オプションが長すぎることと毎日使うようなコマンドではないことから、あまりお勧めできない。

-Linux