Macos 如何在OS X上获取进程的完整路径?
我知道我可以通过使用Macos 如何在OS X上获取进程的完整路径?,macos,process,path,pid,ps,Macos,Process,Path,Pid,Ps,我知道我可以通过使用ps来获得流程的PID,但是如何找到该流程的完整路径呢 OSX有libproc库,可用于收集不同的 过程信息。为了找到一个给定路径的绝对路径 PID,可使用以下代码: 请参阅这篇博文:可以使用一种解决方案: which `ps -o comm= -p $PID` 其中$PID是要检查的进程的PID。已在OS X 10.8.2上测试。请尝试以下操作: sudo ls -l /proc/$(ps -e | grep $PROCESS_NAME | awk '{print $1}
ps
来获得流程的PID
,但是如何找到该流程的完整路径呢
OSX有libproc库,可用于收集不同的
过程信息。为了找到一个给定路径的绝对路径
PID,可使用以下代码:
请参阅这篇博文:可以使用一种解决方案:
which `ps -o comm= -p $PID`
其中$PID是要检查的进程的PID。已在OS X 10.8.2上测试。请尝试以下操作:
sudo ls -l /proc/$(ps -e | grep $PROCESS_NAME | awk '{print $1}')/exe
其中$PROCESS\u NAME是您要检查的进程名称。更便携、更现代的版本:
command-v“$(ps-o comm=-p$PID)”
命令-v
取代了,后者更便于携带
反勾号由$(CMD)
另一种选择取决于GNU CoreUtils的realpath
:
realpath/proc/$PID/exe
可能重复的您是否听说过osxfuse
——存储库文件系统包含几个激动人心且有用的文件系统的源代码,供您浏览、编译和构建,如sshfs、procfs、AccessibilityFS等。我听说过(并使用过),但它并不存在。。。很多用户都没有安装。在10.7.5上也测试过。。。太棒了。但有时它似乎会返回相对路径。这是我做的测试:$>它的'ps-o comm=-p81233`=>。/ft_minishell2
,我的意思是,它不是绝对路径中的完整路径。我不知道这是否是问题背后的最初想法。这是Mavericks。如果您在不同的位置有一个同名的可执行文件,尤其是不在您的路径上的可执行文件,这可能不准确。“which”在PATH env变量中搜索give可执行文件,但它不一定是进程列表中显示的那个@conradk它是“相对”的原因是因为它在您当前的目录中。无论如何,不具有绝对路径结果的换行符?(通过10.12.6测试)@Michael如果想在脚本中使用它,最好通过sed
删除它。
which `ps -o comm= -p $PID`
sudo ls -l /proc/$(ps -e | grep $PROCESS_NAME | awk '{print $1}')/exe