ディスク上に同じアプリケーションの複数のコピーがあり、ps
で見たように1つだけが実行されている場合、他のアプリケーションと区別するための絶対パスをどのようにして知ることができますか?
108 Jader Dias 2010-02-01
% sudo ls -l /proc/PID/exe
eg:
% ps -auxwe | grep 24466 root 24466 0.0 0.0 1476 280 ? S 2009 0:00 supervise sshd % sudo ls -l /proc/24466/exe lrwxrwxrwx 1 root root 0 Feb 1 18:05 /proc/24466/exe -> /package/admin/daemontools-0.76/command/supervise
130 akira 2010-02-01
Use:
pwdx $pid
これは、pid の絶対パスではなく、pid の現在の作業ディレクトリを提供します
通常、which
コマンドはシェルから起動されているものを教えてくれます
#> which vlc
/usr/bin/vlc
26 seenu 2013-05-03
一つの方法は ps -ef です
17 fpmurphy 2010-02-01
ps auxwwwe
Source:
4 Jader Dias 2010-02-01
手っ取り早い答えは、オプションでps
を使うか、ファイルシステム情報で/proc
を使うことです。これは通常は動作しますが、保証されているわけではありません。一般的に、明確で保証された答えはありません。例えば、実行中にファイルが削除されて、ファイルへのパスがない場合はどうでしょうか?
Unix FAQ、特に質問 4.3 と 4.4 を参照してください
3 mpez0 2010-02-01
lsof
はオプションです。以下のようなものを試してみてください
lsof -p PROCESS_ID
これは、実行ファイルの実際の場所を含むプロセスによって開かれたすべてのファイルをリストアップします。その後、awk
, cut
, grep
などを追加して、探している情報を見つけることができます
例として、私は以下のコマンドを実行して、「java」プロセスがどこから来たのかを特定しました
lsof -p 12345 | awk '{print $NF}' | grep 'java$'
3 ram 2017-10-09
なぜ誰もがPIDを知っていることを期待するのか?ここに人間に優しい方法があります
pwdx `pgrep ###process_name###`
2 moodboom 2016-04-27
を使用することができます
readlink /proc/$(pgrep -x -U $(id -ur) APP_NAME)/exe
or
find /proc/$(pgrep -x -U $(id -ur) APP_NAME)/exe -printf "%l\n"
現在のユーザとして動作しているAPP_NAMEの絶対パスを取得します
0 jarno 2016-03-05