Solaris

如何從程序 ID 中獲取路徑詳細資訊?

  • September 27, 2017

為了查看正在執行的程序 25014 的路徑,我在 Linux 上執行以下操作:

 ls -l /proc/25014/exe

輸出:

lrwxrwxrwx 1 root root 0 Mar  9 16:35 /proc/25014/exe -> /etc/syscconfig

如果我們有 Solaris OS。Solaris上有什麼相同的概念?在 Solaris 中,我們沒有 exe 文件。

我是作者,這個答案不正確,應該刪除(不能刪除,因為它是公認的答案)。正如下面的評論中所指出的,它將返回程序的工作目錄,也就是目前目錄。除非程序本身已更改其工作目錄,否則它將是啟動程序的目錄,而不是執行檔的目錄。底線:這個答案在問題的上下文中是不正確的。


這是一種方法。

在 Solaris 中,您將使用該pargs -ae <pid>命令。

該行將argv[0]:告訴您正在執行的執行檔。然而,這還不夠,因為您不知道該程序啟動時的目前目錄,因此如果 arg0 不是完全限定的,那麼您就沒有執行應用程序的*完整路徑。*不要害怕。進一步查看上述命令的輸出,並在程序環境變數的輸出中查找PWD. 將兩者結合起來,您就擁有了執行檔的完整路徑。

以下是命令的一些範例輸出pargs -ae

8200:   ./sshd
argv[0]: ./sshd

envp[0]: LANG=C
envp[1]: LC_ALL=
envp[2]: LC_COLLATE=
envp[3]: LC_CTYPE=
envp[4]: LC_MESSAGES=
envp[5]: LC_MONETARY=
envp[6]: LC_NUMERIC=
envp[7]: LC_TIME=
envp[8]: PATH=/usr/sbin:/usr/bin
envp[9]: PWD=/usr/lib/ssh
envp[10]: SHLVL=2
envp[11]: SMF_FMRI=svc:/network/ssh:default
envp[12]: SMF_METHOD=start
envp[13]: SMF_RESTARTER=svc:/system/svc/restarter:default
envp[14]: SMF_ZONENAME=myhost1
envp[15]: TZ=localtime
envp[16]: A__z="*SHLVL

引用自:https://serverfault.com/questions/674010