2008年10月17日金曜日

プロセス毎の環境変数を参照する

メモエントリ
 

Linuxサーバで、動作中のプロセスが独自に使っている環境変数などが調べたくなった。
proc 以下に書いてあるらしいので参照する。
/proc/{プロセスID}/environ
 

参考としてpostfix の master を調べてみた。
# cat /proc/6348/environ | tr "\000" "\n"
MAIL_CONFIG=/etc/postfix
sample_directory=/usr/share/doc/postfix-2.3.3/samples
OLDPWD=/etc/postfix
setgid_group=postdrop
sendmail_path=/usr/sbin/sendmail.postfix
mailq_path=/usr/bin/mailq.postfix
manpage_directory=/usr/share/man
readme_directory=/usr/share/doc/postfix-2.3.3/README_FILES
newaliases_path=/usr/bin/newaliases.postfix
PATH=/bin:/usr/bin:/sbin:/usr/sbin
PWD=/var/spool/postfix
queue_directory=/var/spool/postfix
LANG=C
mail_owner=postfix
daemon_directory=/usr/libexec/postfix
SHLVL=1
config_directory=/etc/postfix
MAIL_LOGTAG=postfix
html_directory=no
command_directory=/usr/sbin
_=/usr/libexec/postfix/master


ファイルの中身はnull文字で区切られているらしいのでtrコマンド で「NULL=\000」を「改行=\n」に置換して表示するとよい模様。
参考にしたページがあるんだけど、コメント投稿欄がビミョーだったのでリンクしない。
 

いろんな 環境変数 あるんだなー。という感じだ。
元々はプロセスに LOCALDOMAIN 環境変数が渡されて無いかの調査だったので、コレでOKかな。
 

procのmanページも参考にされたし。