web-dev-qa-db-ja.com

プロセスが呼び出された場所を知るにはどうすればよいですか

同じスクリプトの異なる構成を異なるフォルダーで(厳密なクローン作成によって)実行し、外部端末から、実行中のプロセスのソースフォルダーがどれであるかを知ることができるかどうかを知りたいですか?

I.E.

  • 3つのフォルダーからpythonスクリプトを実行します:pyjournal1/source/script.pypyjournal2/source/script.py、およびpyjournal3/source/script.py
  • 私はhtopを見ていますが、それらはすべて同じように見えます "python3 script.py "しかし、私はそれがどれであるかを認識できません。
  • realpathreadlinkは、ご存知のように、「呼び出し元フォルダー」ではなく、Pythonへのパスを提供します。

何か案が ?

どうもありがとう、エドゥアール

1
Edouard Batot

まず、プロセスのPIDを取得します。

$ pgrep <proccess>

次に、pwdxを使用できます。

$ pwdx <PID>

/proc wayは、pidに対応するディレクトリのexeリンクを検査することです。

update-notifierの例を見てみましょう。

この例では15421であるpidを見つけます。

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

シンボリックリンクを検索します。

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

クレジット: https://askubuntu.com/a/49030/68067

2