プロセスが実行された場所を知る方法

topでプロセスや計算ジョブを確認してkillしたい場合、同じシェルスクリプトの名前で実行するとどれがどの計算かわからなくなることがあります。それぞれのプロセスがどこで実行されたか、知る方法をまとめました。

①プロセスIDを知る

まずプロセスIDを調べます。以下の方法で知ることができます。

top

これは簡単ですが、必ずしも目的のコマンドが表示されないこともあります。
たとえば、md.shというシェルスクリプトで逐次実行させている場合は、表示されません。このとき、topでこれを知るためには、Shift + o で並び替えページが出せるので、eをタイプしてEnterするとユーザー名で並び替えができます。

もしくは次の方法もあります。コマンド名がわかっていればこちらの方が簡単です。

ps aux | grep [command]

[command]は、コマンド名です。たとえば、

bash md.sh &

で実行させたときは、[command]をbash として実行すると表示されます。

プロセスIDは大抵4~5桁の整数となります。

②プロセスを実行した場所を知る

プロセスIDを[PID]とすると、

ls -l /proc/[PID]/cwd

でプロセスを実行した場所がリンクの形で見ることができます。

この他にも、/proc/[PID]にはプロセスに関する様々な情報が格納されています。

たとえば、以下のコマンドは実行した際のコマンド文字列が取得できます。

cat /proc/[PID]/cmdline

ちなみに愛用のディストリビューションFedoraです。UbuntuDebian系では試してません。