जवाबों:
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