psコマンドで出力したプロセスはどこの場所(パス)で実行されているか

背景

psコマンドを実行したら以下のような表示になり、この unicorn を何?出どころはどこ?となりました。

$ ps aux | grep unicorn
foobar    4856  0.0  0.1  86892 17952 ?        Sl    2月20   0:02 unicorn master -c unicorn_config.rb -D

調べ方

/proc 配下に移動する

プロセスID が 4856 ですので、まずは /proc/4856 に移動します。

$ cd /proc/4856

いくつかのファイルやディレクトリ内を調べる

/proc/4856 配下には多くのファイルやディレクトリがあります。今回の目的では以下のものを調べるとよいのではないでしょうか。

  • cmdline
    • cat すると、実行されているコマンドが表示されます
    • 区切り文字はNULLであるので注意です
  • cwd
    • このディレクトリ以下は、元のプロセスが実行されている場所と同じ構造です

今回は cwd を調べる

今回は /proc/4856/cwd を以下のように調べました。

$ cd /proc/4856/cwd
$ ls -la
合計 120
drwxrwxrwx 8 root   root    4096  2月 20 11:19 ./
drwxr-xr-x 5 root   root    4096  3月  2 10:14 ../
drwxr-xr-x 2 root   root    4096  2月  8 10:38 .bundle/
drwxr-xr-x 8 root   root    4096  2月  8 10:37 .git/
-rw-r--r-- 1 root   root     943  2月  8 10:37 .gitignore
-rw-r--r-- 1 root   root     214  2月  8 10:37 Gemfile
-rw-r--r-- 1 root   root    1457  2月  8 10:38 Gemfile.lock
-rw-r--r-- 1 root   root    1069  2月  8 10:37 LICENSE
-rw-r--r-- 1 root   root     329  2月  8 10:37 README.md
(中略)
-rw-r--r-- 1 root   root     316  2月  8 10:44 unicorn_config.rb

unicorn_config.rb が見つかりましたのでこのディレクトリで間違いがなく、unicorn_config.rb の内容や README.md の内容を見ることで場所が判明しました。

備考

もっといい方法や、OSS がありそうな気がしています*1

参考

*1:が、これを実行する機会があんまりないと思うのでこの記事の内容でいいかな

Powered by はてなブログ