Ответы:
Попробуйте watch
команду:
watch -n 10 ls -l /proc/$$/fd
Смотреть приятно.
Вы можете использовать старую школу while:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watch
находится в пакете procps в системах на основе Debian и в RPPS для систем, производных от RedHat.
Если вы хотите видеть каждый файл при его открытии, вы можете отфильтровать его с помощью strace
. Например:
strace -p _pid_of_app_ -e trace=open,close
-y
и -f
если вы пытаетесь отладить что-то, работающее в оболочке. Просто -f
введите PID оболочки и последует за любыми вилками.
Вы могли бы объединить lsof
и watch
.
Например watch "lsof -p 1234"
, даст вам список всех открытых файлов pid 1234 каждые 2 секунды. Вы можете изменить некоторые параметры в соответствии с вашими потребностями.
-r
возможности для lsof
. Поэтому я watch
выполнял lsof
каждые две секунды.
Я создал файл 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