获取进程文件的路径

时间:2014-04-06 22:01:43

标签: python linux shell operating-system

我正在尝试执行一个需要捕获正在使用的文件的完整路径的程序(系统中的任何位置) 直截了当的一个例子。 我在

中打开了一个名为“notify.py”的文件
/home/miguel/Dropbox/prog/python/notify/ 

。目录

当我打电话

ps aux
在linux shell中,与该文件进程对应的进程行是

miguel   11798  0.7  0.4 512320 34176 pts/2    Sl   22:41   0:06 gedit notify.py

没有说明我实际打开的文件的路径! 我想要的(并且一直在寻找小时,无论是使用ps,lsof还是python的psutil)是一种获取与该进程相对应的文件的完整路径的方法,也就是说,我希望从进程到获取上面引用的目录行。

感谢您的回答

1 个答案:

答案 0 :(得分:2)

您可以尝试readlink(2)文件/proc/<pid>/exe,这应该是您想要的:

$ ls -l /proc/$$/exe
lrwxrwxrwx 1 aw aw 0 Apr  7 00:02 /proc/11700/exe -> /bin/zsh
$

但请注意,这不是过于便携。它应该适用于Linux和至少FreeBSD,但可能在其他UNIC上失败。这也是为什么例如sshd希望用完整路径调用,这样就可以使$0(或argv[0]或与第0个命令行参数对应的任何内容)知道确切的位置二进制。没有可移植的方法来做到这一点。