जवाबों:
watch
आदेश का प्रयास करें :
watch -n 10 ls -l /proc/$$/fd
घड़ी अच्छी है।
आप एक पुराने स्कूल का उपयोग कर सकते हैं जबकि लूप:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watch
में है procps डेबियन आधारित सिस्टम पर पैकेज और procps RedHat पर आरपीएम व्युत्पन्न प्रणालियों।
यदि आप प्रत्येक फ़ाइल को खोलना चाहते हैं, जैसा कि आप खोल रहे हैं, तो आप उसे फ़िल्टर कर सकते हैं strace
। उदाहरण के लिए:
strace -p _pid_of_app_ -e trace=open,close
-y
और -f
यदि आप किसी शेल में चल रहे कुछ डिबग करने का प्रयास कर रहे हैं। बस शेल पीआईडी को पास करें और -f
किसी भी कांटे का पालन करें।
आप गठबंधन कर सकते हैं lsof
और watch
।
उदाहरण के लिए watch "lsof -p 1234"
, आपको प्रत्येक 2 सेकंड में पीआईडी 1234 की सभी खुली फाइलों की एक सूची दी जाएगी। आप अपनी आवश्यकताओं को पूरा करने के लिए कुछ मापदंडों को बदल सकते हैं।
-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