Linux
shell

odコマンドを使用して特定プロセスの環境変数を綺麗に表示する

More than 3 years have passed since last update.

serviceや別のシェルから起動されたプロセスがどんな環境変数で動いているのかを確認したいことが時々あります。
いままではcatを使って表示していましたが、odを使うと見やすいことに気づいたので共有しておきます。

動作確認環境

  • CentOS 6.6
  • CentOS 7.0

catによる環境変数の表示

実行中のプロセスに関連した情報は/proc/[PID]の下に格納されており、環境変数は/proc/[PID]/environで見ることができます。

$ cat /proc/[PID]/environ
LANG=ja_JP.utf-8USER=sheileLOGNAME=sheileHOME=/home/sheilePATH=/usr/local/bin:/usr/binMAIL=/var/mail/sheileSHELL=/bin/zsh...

この方法でも一応見ることができますが、各設定の区切りが¥0となっており、catで表示すると全て繋がって表示されてしまいます。この状態だとgrepなどでの絞り込みもしづらく、ちょっと不便に感じていました。

odによる環境変数の表示

odコマンドにはバイナリに含まれる文字列を表示する-Sオプションがあり、これを使うことで上述したenvironファイルを綺麗に表示することができます。

$ od -S1 /proc/[PID]/environ
0000000 LANG=ja_JP.utf-8
0000021 USER=sheile
0000035 LOGNAME=sheile
0000054 HOME=/home/sheile
0000076 PATH=/usr/local/bin:/usr/bin
0000133 MAIL=/var/mail/sheile
0000161 SHELL=/bin/zsh
...

オフセットも邪魔な場合には-Aオプションで消してしまいましょう。

$ od -S1 -An /proc/[PID]/environ
LANG=ja_JP.utf-8
USER=sheile
LOGNAME=sheile
HOME=/home/sheile
PATH=/usr/local/bin:/usr/bin
MAIL=/var/mail/sheile
SHELL=/bin/zsh
...