查找在 python 端口托管上运行的文件

查找在 python 端口托管上运行的文件

我有一个由服务器localhost:5000托管的端口。如何在不知道任何额外信息的情况下知道它提供哪个文件?python3ubuntu

我正在使用lsof -i :5000,而且我只知道它由 python 3 托管。我试图在没有任何额外知识的情况下找到由它托管的文件/文件夹。我知道的是,确实有一些文件使用 python3 托管在端口 5000 上。但我不知道托管文件的名称是什么以及它位于哪个目录。

也尝试过fuser 5000/tcp -v但是 id dones 没有显示托管的文件。

这是可能的吗?我需要什么命令来获取它托管的所有文件/文件夹?

答案1

lsof应该已经告诉您该进程的 PID。我们将其称为$pid。调查里面的内容/proc/$pid/。以下某些命令可能需要 root 访问权限(即您可能需要sudo su -事先获得)。

cd /proc/$pid
readlink exe      # the executable
readlink cwd      # current working directory
xxd cmdline       # command line (xxd useful because items are null-separated)

cd /proc/$pid/fd
ls -l             # file descriptors in use

另外,在使用时与服务器交互(例如下载文件)strace以查看其功能。请参阅此答案:如何调查某个进程正在做什么?

或者您可以下载文件,然后尝试通过比较内容来查找重复项。初步按大小比较可能会大大加快速度。

file="/path/to/the/downloaded/file"
size=`<"$file" wc -c`

# now you will probably want to use sudo
find / -type f ! -path "/proc/*" ! -path "/sys/*" ! -path "/dev/*" -size ${size}c -exec cmp -s "$file" {} \; -print

unset -v file size    # just to clean

注意我排除了/proc//sys//dev/。您可能还会熟悉-xdev(参见man 1 find) 并可能使用它。

相关内容