プロセスのバイナリへのパスを決定するにはどうすればよいですか?


30

プロセスが開始されたディレクトリ/ディスクの場所を見つける方法はありますか?/ procマウントについては知っていますが、実際にその中を見る場所はありません。


1
バイナリの場所、またはプロセスが開始されたディレクトリのことですか?
レーケンシュタイン

申し訳ありませんあいまいさのために、私はバイナリ意味
スーパージャンボ

回答:


37

/proc方法は、検査することになりexe、PIDに対応するディレクトリ内のリンクを。

例を見てみましょう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'

そうそう、ほとんどそこにいた。伝説、ありがとう。
スーパージャンボ


6

利用可能なプロセスIDを提供すると、以下を使用できます。

readlink -f /proc/$pid/exe

$pidプロセスのプロセスIDで置き換えます)

プロセスが所有者でない場合は、そのsudo前に配置する必要があります。

コマンドの場所を決定する例firefox

  1. の出力ps ax -o pid,cmd | grep firefox

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 はプロセスIDなので、次を実行する必要があります。

    readlink -f /proc/28179/exe
    

    どの出力:

    /usr/bin/firefox
    

2
あなたがクールなことを行うことができ/proc/$pid/exe、バイナリが誤って削除された場合、あなたがそれを復元することができます:dd if=/proc/$pid/exe of=restored-binary
Lekensteyn

1

ターミナルに移動して次のように入力するには、Ctrl+ Alt+ Tを押します。

ls -al /proc/{pid}/fd  

そして、出力を確認してください

これにより、プロセスが関連付けられているすべてのファイルが一覧表示されます...


あなたは私の確認してもらえ編集をしても見直す編集ヘルプ ...将来的にはあなたの答えの可読性を向上させるために;-)
Fabby

0

他の回答のコマンドはすべて優れていますが、さらに多くのことを行うことができます。プロセスリストに到達する前に、プロセスが実際にどのように実行されたかを確認できます。

ターミナルで実行:

top

そして、実行中にキーボードCを押すと、実行されたプロセスのコマンドが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.