উত্তর:
ফাইলটি /proc/<pid>/io
আপনার যা প্রয়োজন তা উপস্থাপন করে। এটির মতো আউটপুট পেতে কিছুটা স্ক্রিপ্টিং কাজ iotop
। দেখুন Linux kernel ডকুমেন্টেশন থেকে /proc/<pid>/io
ফাইল মান:
rchar
আই / ও কাউন্টার: অক্ষরগুলি পড়ায় স্টোরেজ থেকে এই টাস্কটি কতগুলি বাইট পড়েছে তার সংখ্যা। এটি কেবলমাত্র বাইটের সমষ্টি যা এই প্রক্রিয়াটি () এবং প্রিড () পড়ার জন্য পাস হয়েছিল। এতে tty IO এর মতো জিনিস অন্তর্ভুক্ত রয়েছে এবং এটি প্রকৃত শারীরিক ডিস্ক আইও প্রয়োজন ছিল কিনা তা দ্বারা প্রভাবিত হয় না (পঠন পেজ থেকে ক্যাচটি সন্তুষ্ট থাকতে পারে)
wchar
আই / ও কাউন্টার: অক্ষরগুলি লেখা এই টাস্কটি তৈরি করেছে বা ডিস্কে লেখার কারণ হতে পারে তার সংখ্যা। আরচারের মতো এখানেও একই জাতীয় সতর্কতা প্রয়োগ হয়।
[...]
read_bytes
আই / ও কাউন্টার: বাইটস স্টোরেজ স্তর থেকে এই প্রক্রিয়াটি সত্যিকার অর্থে আনার কারণ হিসাবে বাইট সংখ্যাটি গণনা করার প্রচেষ্টাটি পড়েন। সাবমিট_বায়ো () স্তরে সম্পন্ন হয়েছে, সুতরাং এটি ব্লক-ব্যাকড ফাইল সিস্টেমগুলির জন্য সঠিক।
write_bytes
আই / ও কাউন্টার: এই প্রক্রিয়াটি স্টোরেজ স্তরে প্রেরণের কারণে বাইট সংখ্যাটি গণনা করার চেষ্টা করা বাইটস written এটি পৃষ্ঠা-নোংরা সময়ে করা হয়।
এখন, আপনি সেই ছোট bash
স্ক্রিপ্টটি ব্যবহার করতে পারেন :
#!/bin/bash
if [ "$(id -u)" -ne 0 ] ; then
echo "Must be root" 2>&1
exit 1
fi
delay=2
lista=$(for p in $(pgrep "."); do echo -n "$p "; grep ^rchar /proc/$p/io 2>/dev/null; done)
while :; do
echo "-----"
listb=$(for p in $(pgrep "."); do echo -n "$p "; grep ^rchar /proc/$p/io 2>/dev/null; done)
echo "$lista" | while read -r pida xa bytesa; do
[ -e "/proc/$pida" ] || continue
echo -en "$pida:\t"
bytesb=$(echo "$listb" | awk -v pid=$pida '$1==pid{print $3}')
echo "$((($bytesb - $bytesa) / $delay)) b/s"
done | sort -nk2 | tail
sleep $delay
listb=$lista
done
এটি তাদের মধ্যে 2 সেকেন্ডের বিলম্বের সাথে দুটি তালিকা তৈরি করে ( $delay
: হতে পারে- বা হ্রাস করা যেতে পারে) এবং তারপরে তালিকার তুলনা করে এবং পার্থক্য গণনা করে। সর্বাধিক I / O সহ 10 টি প্রক্রিয়া শেষ 2 সেকেন্ডে তাদের I / O ব্যান্ডউইথ দিয়ে মুদ্রিত হয়। আপনি যদি I / O পড়ার পরিবর্তে I / O লিখতে চান grep
তবে তালিকাগুলিতে কেবলমাত্র wchar
পরিবর্তে কমান্ডটি সম্পাদনা করুন rchar
:
lista=$(for p in $(pgrep "."); do echo -n "$p "; grep ^wchar /proc/$p/io 2>/dev/null; done)
listb=$(for p in $(pgrep "."); do echo -n "$p "; grep ^wchar /proc/$p/io 2>/dev/null; done)