Mac-Osx

在“ps auxwww”輸出中獲取執行檔的完整路徑

  • November 20, 2020

考慮輸出中的以下幾行"ps auxwww"

USER       PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
root      4262   0.0  0,1    76592   1104 s005  Ss   10:02am   0:00.03 login -pf yo
yo        4263   0.0  0,0    75964    956 s005  S    10:02am   0:00.03 -bash

如何強制ps將 COMMAND 列中的所有命令擴展為其完全限定的路徑名?我希望登錄被解析到 /usr/bin/login 和 Bash 到 /bin/bash。

Mac OS X 中是否有相當於procfs的功能?也就是說——是否有基於文件的機制來輕鬆獲取程序資訊?

試試這個:

ps ax -o pid,cmd

您可以根據需要重新格式化它(閱讀手冊頁了解詳細資訊)。

最後,我認為 ps(甚至是 cat /proc/*/cmdline)會以啟動方式報告命令。因此,如果沒有給出完整路徑,它將僅顯示為“command”而不是“/path/to/command”。

首先,程序可以更改 報告的標題ps,因此它本身不是很可靠。您可以使用“e”標誌嘗試環境變數。

ps auxwwwe

其中應該有一個內置的 ‘_’ 變數,如此處所述。

對於作為 shell 的子程序執行的每個命令,sh 將此變數設置為執行檔的完整路徑名,並將此值通過環境傳遞給該子程序。

這對於shBSD 和 Linux 一樣適用。我相信這不能被使用者覆蓋。但是,它的可用性可能取決於使用者選擇的外殼,它非常討厭,而且您的里程可能會有所不同。


OS X 沒有本機 procfs。有一個基於FUSE的埠。詳細資訊可以在這裡找到。同樣,您的里程可能會有所不同。

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