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