获取进程文件的路径



我正在尝试做一个需要捕获正在使用的文件的完整路径的程序(系统中的任何地方)直接举个例子。我打开了一个名为"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)是一种获取与该进程对应的文件的完整路径的方法,也就是说,我想从进程中获取上面引用的目录行。

感谢您的回答

您可以尝试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 个命令行参数的内容)知道二进制文件的确切位置就足够了。 没有便携式方法可以做到这一点。

相关内容

  • 没有找到相关文章

最新更新