Файлы, открытые процессом XYZ, можно найти с помощью команды
ls -l /proc/PID/fd
Есть ли что-то более интерактивное, например tail
автоматическое обновление каждые x секунд?
Попробуйте watch
команда:
watch -n 10 ls -l /proc/$$/fd
Смотреть приятно.
Вы можете использовать старый цикл while:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watch
находится в procps пакет в системах на основе Debian и procps rpm в системах, производных от RedHat.
Если вы хотите видеть каждый файл, когда он открывается, вы можете отфильтровать его с помощью strace
. Например:
strace -p _pid_of_app_ -e trace=open,close
Вы можете комбинировать lsof
и watch
.
Например watch "lsof -p 1234"
будет выдавать вам список всех открытых файлов pid 1234 каждые 2 секунды. Вы можете изменить некоторые параметры в соответствии со своими потребностями.
Я создал файл bash, в котором записывал вывод команды в файл. Файл был создан на основе текущей даты. Здесь я считаю количество открытых файлов.
#!/bin/bash
while :
do
cd /proc/<PID>/fd
today=$(date +"%m-%d-%Y")
filename="/tmp/${today}.txt"
ls -l | wc -l >> "${filename}"
sleep 10
done