Solaris
如何從程序 ID 中獲取路徑詳細資訊?
為了查看正在執行的程序 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