我正在尝试做一个需要捕获正在使用的文件的完整路径的程序(系统中的任何地方) 直接举个例子。 我打开了一个名为“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 个命令行参数对应的任何内容)以了解二进制文件的确切位置。没有可移植的方法来执行此操作。
关于python - 获取进程文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900568/