У меня есть порт localhost:5000 который размещается на сервере python3 в ubuntu . Как узнать, какой файл он обслуживает, не зная ничего лишнего?

Я использую lsof -i :5000 и я знаю только, что он находится на Python 3. Я пытаюсь найти файл / папку, размещенную на том, что без каких-либо дополнительных знаний. То, что я знаю, что да, есть некоторый файл, размещенный на порту 5000 с использованием Python3. Но я не знаю, как называется размещенный файл и в каком каталоге он находится.

Также пробовал fuser 5000/tcp -v но идентификаторы не показывают файл, размещенный.

Это возможно, и какая команда мне нужна, чтобы получить все файлы / папки, размещенные на нем?

1 ответ1

2

lsof должен был сказать вам PID процесса. Давайте назовем это $pid . Исследуйте, что находится внутри /proc/$pid/ . Некоторым из следующих команд может потребоваться доступ с правами суперпользователя (т.е. вы можете захотеть 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) и использовать его, возможно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .