実行中の Linux プロセスに関する次の情報を取得するにはどうすればよいですか?
- シェル環境変数
- 作業ディレクトリ
- コマンドラインオプション
答え1
この情報は以下から入手できます/procファイルシステムでは、実行中のプロセスに関する情報が保存されます。
cat /proc/<pid>/environ
cd /proc/<pid>/cwd; pwd -P
cat /proc/<pid>/cmdline
答え2
@atype の提案に従って環境を出力すると、すべての環境変数とその値が区切りなしで連結されます。
より良い出力を得るには、
$ xargs -0 -L 1 echo < /proc/21645/environ
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
SHELL=/bin/bash
TERM=xterm
LC_MESSAGES=en_US.UTF-8
LANGUAGE=en_US.UTF-8
(プライバシー上の理由により出力は短縮されています)
説明
/proc/$pid/environ には、環境変数が null で区切られたリストとして含まれています。
xargs は、*STDIN から任意の長さのリストを読み取り、その要素をツール (この場合は echo) に送り、最大コマンド ライン長を超えないようにするツールです。パラメータ "-0" は、xargs が項目区切り文字として null (デフォルトの空白または改行の代わりに) を使用するように切り替えます。パラメータ "-L 1" は項目の数を 1 に制限します。これにより、各環境変数が新しい行に出力されます。