Відповіді:
Спробуйте 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