プロセスがどこで呼び出されたのか、どうすればわかりますか?

プロセスがどこで呼び出されたのか、どうすればわかりますか?

厳密なレプリケーションでは、別のフォルダで同じスクリプトの他の設定を実行していますが、外部端末で実行されているプロセスのソースフォルダがわかりますか?

つまり

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

どんなアイデアがありますか?

本当にありがとう、エドワード

答え1

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

$ pgrep <proccess>

その後、pwdxを使用できます。

$ pwdx <PID>

これ/proc方法exepidに対応するディレクトリへのリンクがチェックされます。

たとえば、見てみましょうupdate-notifier

pidを探します。15421この例では、次のようになります。

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/680673

関連情報