Unix
如何獲取 *nix 程序文件名
如何找出正在執行的程序的程序文件名是什麼?
以下從 shell 執行將在所有正在執行的程序的最後一列中為您提供命令、其完整路徑和呼叫參數:
ps -eF
這是 unix 語法,因為您並不具體。linux 中還有 GNU 和 BSD 語法。
man ps
了解更多。
請注意,上述所有命令僅在某些時候有效。例如,此處“ps”的輸出顯示了程序的路徑,但如果您嘗試訪問該路徑,您會發現那裡什麼都沒有:
$ ./myprogram & $ rm myprogram $ ps -fe | grep myprogram lars 27294 29529 0 20:39 pts/1 00:00:00 ./myprogram $ ls myprogram ls: myprogram: No such file or directory
實際上, ps 顯示的值完全取決於啟動程序的任何程式碼。例如:
$ python -c "import os; os.execl('./myprogram', '/usr/sbin/sendmail')" & myprogram: i am: 27914 $ ps -f -p 27914 UID PID PPID C STIME TTY TIME CMD lars 27914 29529 0 20:44 pts/1 00:00:00 /usr/sbin/sendmail
所以基本上,你不能依賴 ps 的輸出。您也許可以依賴
/proc/PID/exe
,例如:$ ls -l /proc/27914/exe lrwxrwxrwx 1 lars lars 0 Dec 3 20:46 /proc/27914/exe -> /home/lars/tmp/myprogram
但即使在這種情況下,該文件也可能不再存在。