*

Linuxプロセス起動時の環境変数ダンプの取得

公開日: : 最終更新日:2014/05/05 Linux, プロセス管理, 技術

UnixやLinux上で不具合の調査等々を行う際、特定のプロセス起動時の環境変数を知りたい場合がある。簡単に調べることができるので紹介しよう。

プロセス起動時の環境変数取得方法

プロセス起動時の環境変数は、/procディレクトリ配下の以下のファイルから確認できる。

/proc/[対象プロセス番号]/environ

とても簡単。それでは試してみよう。
ここではapache(httpd)のプロセスを調べると仮定する。

1.調査対象プロセスのプロセスIDを取得

先ず、調査対象プロセスのプロセスIDを取得する。

$ ps aux | grep httpd
root     24235  0.0  0.4 254376  9168 ?        Ss   20:55   0:00 /usr/sbin/httpd
apache   24237  0.1  2.0 285084 39488 ?        S    20:55   0:07 /usr/sbin/httpd
apache   24238  0.1  2.0 285488 39904 ?        S    20:55   0:07 /usr/sbin/httpd
apache   24239  0.1  2.0 284976 39408 ?        S    20:55   0:09 /usr/sbin/httpd
apache   24240  0.1  2.0 284952 39384 ?        S    20:55   0:07 /usr/sbin/httpd
apache   24241  0.1  1.5 275096 29460 ?        S    20:55   0:07 /usr/sbin/httpd
apache   24242  0.1  2.0 284972 39128 ?        S    20:55   0:07 /usr/sbin/httpd
apache   24243  0.1  2.0 284928 39348 ?        S    20:55   0:06 /usr/sbin/httpd
apache   24244  0.1  2.8 304884 55664 ?        S    20:55   0:07 /usr/sbin/httpd
apache   25483  0.1  2.1 287716 41876 ?        S    21:38   0:03 /usr/sbin/httpd
ryozo    25587  0.0  0.0 107468   924 pts/0    S+   22:14   0:00 grep httpd

apacheはリクエストを処理する度に新しいプロセスを立ち上げるから、プロセスが沢山出てきた。
プロセスIDが一番小さいプロセスがapacheのルートプロセスと考えられるけど、ここではpstreeコマンドを使って確認してみる。

$ pstree -p | grep httpd
        |-httpd(24235)-+-httpd(24237)
        |              |-httpd(24238)
        |              |-httpd(24239)
        |              |-httpd(24240)
        |              |-httpd(24241)
        |              |-httpd(24242)
        |              |-httpd(24243)
        |              |-httpd(24244)
        |              `-httpd(25483)
やはりプロセスID「24235」がapacheのルートプロセスのようだ。
これで調査対象プロセスのプロセスID確認は完了した。

2./proc配下のプロセス対応ディレクトリより環境変数を確認

以下のコマンドで起動時の環境変数を確認する。
この「environ」ファイルはrootユーザしか読めないため、rootユーザにスイッチするかsudoして実行する。
また、個々の環境変数はNULL文字(0x0)で区切られているから、NULL文字を改行に置き換えて出力する。

$ ll /proc/24235/environ
-r-------- 1 root root 0  4月  3 20:59 2014 /proc/24235/environ

$ sudo sed -e 's/¥x0/¥n/g' /proc/24235/environ
TERM=xterm-256color
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/
LANG=C
SHLVL=2
_=/usr/sbin/httpd

これでプロセス起動時の環境変数を取得できた。

関連記事

「Systemd」を理解する ーシステム管理編ー

前回の記事「Systemd」を理解するーシステム起動編ーでは、Systemdの概念とSystemdに

記事を読む

sshd再起動時にssh接続が継続する動作について

Linux/Unixサーバにsshしている際、sshdを再起動したとする。 sshdは一度終了する

記事を読む

「Systemd」を理解する ーシステム起動編ー

2014年6月10日、とうとうRHEL7が正式リリースを迎えた。RHEL7での変更点については、この

記事を読む

Java8のインタフェース実装から多重継承とMixinを考える

2014年3月18日、ついにJava8が正式にリリースを迎えた。 折角なので、今後、Java8の新

記事を読む

Ctrl+Cとkill -SIGINTの違いからLinuxプロセスグループを理解する

しばらくLinuxネタが続く・・。 近いうちに最近出たJava8ネタを書いてみようと思います。が、

記事を読む

ipsetを使ってスマートにiptablesを設定する

ギークな知人から「vpsでiptables設定していたらルール設定数の上限に引っかかって思い通りの設

記事を読む

文字コードの考え方から理解するUnicodeとUTF-8の違い

UnicodeとUTF-8の違いを理解していない方が結構居るようなので、文字コードの考え方を元に解説

記事を読む

Java8のHotSpotVMからPermanent領域が消えた理由とその影響

今回も前回の記事につづき、Java8による変更点で未だあまり紹介されていないポイントを記事にしようと

記事を読む

例示専用のIPアドレスとドメインを使いこなす

前回の記事ではネットワークに関する記事を投稿させていただいたが、今回も引き続きネットワーク関連のネタ

記事を読む

Message

メールアドレスが公開されることはありません。

「Systemd」を理解する ーシステム管理編ー

前回の記事「Systemd」を理解するーシステム起動編ーでは、Syst

「Systemd」を理解する ーシステム起動編ー

2014年6月10日、とうとうRHEL7が正式リリースを迎えた。RHE

例示専用のIPアドレスとドメインを使いこなす

前回の記事ではネットワークに関する記事を投稿させていただいたが、今回も

ipsetを使ってスマートにiptablesを設定する

ギークな知人から「vpsでiptables設定していたらルール設定数の

Java8のHotSpotVMからPermanent領域が消えた理由とその影響

今回も前回の記事につづき、Java8による変更点で未だあまり紹介されて

→もっと見る

PAGE TOP ↑