実行中の実行可能ファイルのパスをどのように知ることができますか?

実行中の実行可能ファイルのパスをどのように知ることができますか?

私はLinuxサーバーで作業しており、別のノードで別のタスクを実行しています。

ただし、プログラムをコンパイルするときに具体的な名前を設定していないので、すべてa.out

今、そのうちの1つが実行中であることがわかりました。a.outおそらく何かが間違っている可能性があるので、終了したいと思います。ただし、このTopコマンドは実行可能ファイルへのパスを表示しません。

ここに画像の説明を入力してください。

どうすればいいですか?

ベストアンサー1

あなたはそれを使用することができますlsof(ほとんどすべてのUnixバリアントに適用されますが、通常はデフォルトインストールの一部ではありません。)プロセスで使用されるすべてのファイルを一覧表示します。 「使用済み」には、開かれたファイル記述子だけでなく、プロセスが実行されている実行可能ファイルなど、密接に関連する概念も含まれます。実行ファイルはtxtFD列にあります。未知の歴史的理由

$ lsof -p1234 | grep txt
a.out    1234 user15964  txt   REG  253,0  34567 /path/to/a.out

(合成産物)

SolarisとLinuxにはより直接的なアプローチがあります。プロセスファイルシステム実行中の実行可能ファイルを含む各プロセスに関する情報を提供します。 (少なくともLinuxではここlsofから情報を取得できます。)

$ ls -l /proc/1234/exe
lrwxrwxrwx 1 root root 0 Feb 30 34:56 /proc/1234/exe -> /path/to/a.out

特定の実行可能ファイルを実行するプロセスを探している場合は、次を実行してください。フューザー

$ fuser /path/to/a.out
/path/to/a.out: 1234e 1239e

おすすめ記事