এক্সওয়াইজেড প্রক্রিয়া দ্বারা খোলা ফাইলগুলি কমান্ডের সাথে পাওয়া যাবে
ls -l /proc/PID/fd
যে কোনও উপায়ে tailপ্রতি x সেকেন্ডে স্বতঃ-রিফ্রেশ করার মতো আরও ইন্টারেক্টিভ উপায়ে করা যেতে পারে ?
এক্সওয়াইজেড প্রক্রিয়া দ্বারা খোলা ফাইলগুলি কমান্ডের সাথে পাওয়া যাবে
ls -l /proc/PID/fd
যে কোনও উপায়ে tailপ্রতি x সেকেন্ডে স্বতঃ-রিফ্রেশ করার মতো আরও ইন্টারেক্টিভ উপায়ে করা যেতে পারে ?
উত্তর:
ব্যবহার করে দেখুন watchকমান্ড প্রয়োগ করুন:
watch -n 10 ls -l /proc/$$/fd
ওয়াচ সুন্দর।
লুপ করার সময় আপনি একটি পুরানো স্কুল ব্যবহার করতে পারেন:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watchহয় procps ডেবিয়ান ভিত্তিক সিস্টেমে প্যাকেজ এবং procps তাহলে RedHat উপর RPM উদ্ভূত সিস্টেম।
আপনি যদি প্রতিটি ফাইলটি খোলার সাথে সাথে দেখতে চান তবে আপনি এটি দিয়ে ফিল্টার করতে পারেন 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।
আমি একটি বাশ ফাইল তৈরি করেছি যেখানে আমি একটি ফাইলে কমান্ডের আউটপুট লিখছিলাম। ফাইলটি বর্তমান তারিখের ভিত্তিতে তৈরি করা হয়েছিল। এখানে আমি খোলার ফাইলগুলির সংখ্যা গণনা করছি।
#!/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