Linuxプロセス起動時の環境変数ダンプの取得
UnixやLinux上で不具合の調査等々を行う際、特定のプロセス起動時の環境変数を知りたい場合がある。簡単に調べることができるので紹介しよう。
プロセス起動時の環境変数取得方法
プロセス起動時の環境変数は、/procディレクトリ配下の以下のファイルから確認できる。
とても簡単。それでは試してみよう。
ここでは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
これでプロセス起動時の環境変数を取得できた。
関連記事
-
ipsetを使ってスマートにiptablesを設定する
ギークな知人から「vpsでiptables設定していたらルール設定数の上限に引っかかって思い通りの設
-
Java8のインタフェース実装から多重継承とMixinを考える
2014年3月18日、ついにJava8が正式にリリースを迎えた。 折角なので、今後、Java8の新
-
「Systemd」を理解する ーシステム起動編ー
2014年6月10日、とうとうRHEL7が正式リリースを迎えた。RHEL7での変更点については、この
-
sshd再起動時にssh接続が継続する動作について
Linux/Unixサーバにsshしている際、sshdを再起動したとする。 sshdは一度終了する
-
Java8のHotSpotVMからPermanent領域が消えた理由とその影響
今回も前回の記事につづき、Java8による変更点で未だあまり紹介されていないポイントを記事にしようと
-
例示専用のIPアドレスとドメインを使いこなす
前回の記事ではネットワークに関する記事を投稿させていただいたが、今回も引き続きネットワーク関連のネタ
-
Ctrl+Cとkill -SIGINTの違いからLinuxプロセスグループを理解する
しばらくLinuxネタが続く・・。 近いうちに最近出たJava8ネタを書いてみようと思います。が、
-
「Systemd」を理解する ーシステム管理編ー
前回の記事「Systemd」を理解するーシステム起動編ーでは、Systemdの概念とSystemdに
-
文字コードの考え方から理解するUnicodeとUTF-8の違い
UnicodeとUTF-8の違いを理解していない方が結構居るようなので、文字コードの考え方を元に解説
Comment
t3i7d6
43g10d
04t4sr
3p3pnp
lazxux
wmee9c
easkj6
3jtyx8
2jfh1c
2gxxxt