লিনাক্সে ওপেন প্রক্রিয়া ফাইলগুলি নিরীক্ষণ করুন (রিয়েল-টাইম)


10

এক্সওয়াইজেড প্রক্রিয়া দ্বারা খোলা ফাইলগুলি কমান্ডের সাথে পাওয়া যাবে

ls -l /proc/PID/fd

যে কোনও উপায়ে tailপ্রতি x সেকেন্ডে স্বতঃ-রিফ্রেশ করার মতো আরও ইন্টারেক্টিভ উপায়ে করা যেতে পারে ?

উত্তর:


15

ব্যবহার করে দেখুন watchকমান্ড প্রয়োগ করুন:

watch -n 10 ls -l /proc/$$/fd

ওয়াচ সুন্দর।

লুপ করার সময় আপনি একটি পুরানো স্কুল ব্যবহার করতে পারেন:

while :
do
 ls -l /proc/$$/fd
 sleep 10
done

watchহয় procps ডেবিয়ান ভিত্তিক সিস্টেমে প্যাকেজ এবং procps তাহলে RedHat উপর RPM উদ্ভূত সিস্টেম।


1
ঘুম নিজেই যখন লুপের শর্ত হিসাবে ব্যবহার করা যায়, তাই আপনার উদাহরণটি আরও মার্জিতভাবে এর মতো লেখা যেতে পারে: যখন ঘুম 10; ls -l / proc / $$ / fd করুন; সম্পন্ন
ipozgaj

7

আপনি যদি প্রতিটি ফাইলটি খোলার সাথে সাথে দেখতে চান তবে আপনি এটি দিয়ে ফিল্টার করতে পারেন strace। উদাহরণ স্বরূপ:

strace -p _pid_of_app_ -e trace=open,close

2
এটি সত্যই সেরা উত্তর। আমি পতাকাগুলি সুপারিশ করব -yএবং -fযদি আপনি কোনও শেল দিয়ে চলমান কিছু ডিবাগ করার চেষ্টা করছেন। কেবল শেল পিআইডি পাস করুন এবং -fকোনও কাঁটাচামচ অনুসরণ করবে।
এএই

4

আপনি একত্রিত করতে পারে lsofএবং watch

উদাহরণস্বরূপ, watch "lsof -p 1234"আপনাকে প্রতি 2 সেকেন্ডে 1234 পিডের সমস্ত উন্মুক্ত ফাইলগুলির একটি তালিকা দেবে। আপনার প্রয়োজন মেটাতে আপনি কিছু পরামিতি পরিবর্তন করতে পারেন।


এটি প্রতিটি 2 সেকেন্ডের জন্য কোনও তালিকা দেবে না। কাজ করার জন্য প্যারামিটার -r 2 অনুপস্থিত! -p হল পিআইডি। উত্তর খুব খারাপ!
মহাতমানিচ

2
ভাল, -rজন্য বিকল্প সম্পর্কে সচেতন ছিল না lsof। অতএব আমি প্রতি দুই সেকেন্ডে watchমৃত্যুদন্ড কার্যকর করতাম lsof
খ্রিস্টান

0

আমি একটি বাশ ফাইল তৈরি করেছি যেখানে আমি একটি ফাইলে কমান্ডের আউটপুট লিখছিলাম। ফাইলটি বর্তমান তারিখের ভিত্তিতে তৈরি করা হয়েছিল। এখানে আমি খোলার ফাইলগুলির সংখ্যা গণনা করছি।

#!/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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.