Antworten:
Versuchen Sie den watch
Befehl:
watch -n 10 ls -l /proc/$$/fd
Uhr ist schön.
Sie könnten eine alte Schule while-Schleife verwenden:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watch
ist im procps- Paket auf Debian-basierten Systemen und im procps-RPM auf von RedHat abgeleiteten Systemen enthalten.
Wenn Sie jede Datei beim Öffnen sehen möchten, können Sie dies mit filtern strace
. Zum Beispiel:
strace -p _pid_of_app_ -e trace=open,close
-y
und -f
wenn Sie versuchen, etwas zu debuggen, das in einer Shell ausgeführt wird. Geben Sie einfach die Shell-PID ein und -f
folgen Sie den Gabeln.
Sie könnten kombinieren lsof
und watch
.
Zum Beispiel erhalten watch "lsof -p 1234"
Sie alle 2 Sekunden eine Liste aller geöffneten Dateien von pid 1234. Sie können einige Parameter ändern, um sie Ihren Anforderungen anzupassen.
-r
Option für nicht bewusst lsof
. Deshalb habe ich watch
auszuführen lsof
alle zwei Sekunden.
Ich habe eine Bash-Datei erstellt, in der ich die Ausgabe des Befehls in eine Datei geschrieben habe. Die Datei wurde zum aktuellen Datum erstellt. Hier zähle ich die Anzahl der geöffneten Dateien.
#!/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