これはLinuxでプロセスパスを表示するコマンドです
ps -auxwe | grep 24466 ( 24466 is only example )
しかし、Solarisで実行中のプロセスのパスを表示することは可能でしょうか?
もしそうなら、Solaris の ps 構文は何ですか?
答え1
pwdx は Solaris と Linux で使用できます。
パスワード<pid_number>
例:
pwdx $$
25711: /export/home/pippo
答え2
実行中のプロセスの絶対パスを知るにはどうすればよいですか?
「絶対パス」が実行中のバイナリの完全なパスを意味する場合、これは私がインストールした Solaris 11 のコピーで動作します。
pmap PID | grep -v ':' | head 1 | awk '{ print $4 }'
PID
関心のあるプロセスのプロセス ID に置き換えます。
pmap
プロセスのアドレスマップを出力します。これにはマッピングのソースファイルのフルパスが含まれます。これには実際のバイナリが含まれます。マッピング出力の最初の行には、プロセス ID とプロセス引数が含まれます。プロセス引数だけでは、実行中の実行可能ファイルへのフル パスを完全に特定できないことに注意してください。実際のアドレス空間マッピングの最初の数行は、バイナリの完全な絶対パスとともにリストされた、実際に実行されているバイナリからのマッピングです。
残念ながら、その情報を取得するには、プロセス マップへの読み取りアクセスが必要です。そのアクセスなしで、探している情報を取得する方法はわかりません。
編集: /proc/[PID]/path/a.out
Solaris 11 にも、実際のバイナリへのソフト リンクがあります。
bashの場合:
bash-4.1$ readlink /proc/$$/path/a.out
/usr/bin/bash
/proc/$$/path/a.out
はよりも優れていることに注意してください/proc/self/path/a.out
:
bash-4.1$ readlink /proc/self/path/a.out
/usr/bin/readlink
残念ながら、 経由でプロセス マップにアクセスできない場合はpmap
、 にもアクセスできない可能性があります/proc/[PID]/path/a.out
。これは、Solaris 11 インストールの の権限が/proc/[PID]/path
すべて 500 であるためです。つまり、所有者と root だけがディレクトリの読み取り権限と実行権限を持っています。
答え3
/usr/ucb/ps auxwwww | grep 6851 は、SunOS servername01 5.10 Generic_147440-25 sun4u sparc SUNW、Sun-Fire-V490 で動作しました。