python - 获取进程文件路径

标签 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)是一种获取与该进程对应的文件的完整路径的方法,也就是说,我想从进程到获取上面引用的目录行。

感谢您的回答

最佳答案

您可以尝试 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/

相关文章:

Python 在 64 位 Vista 上获得 os.environ ["ProgramFiles"] 的错误值

linux - g_mass_storage 虚拟 usb 设备的性能非常低

linux - lxc 容器中存储的核心文件在哪里?

c - strtok 和转义字符

python - 如何向 Tkinter 添加部分透明的图像?

python - 查找最佳子字符串匹配

c++ - 在 C++ 程序中处理 "system"调用的结果

python - 从 flask 应用程序运行 shell 命令

python - SQLite3 Python : executemany SELECT

使用 libtinfo 依赖项编译的带有 ncurses 的 C 代码