উত্তর:
progress
(কোরেটিলস প্রগতি ভিউয়ার) বা এর সাম্প্রতিক সংস্করণগুলি pv
একটি নির্দিষ্ট প্রক্রিয়াটির একটি ফাইল বর্ণনাকারী দেখতে পারে। সুতরাং আপনি এটি করতে পারেন:
lsof your-file
( $pid
) কী প্রক্রিয়া লিখছে এবং কোন ফাইল বর্ণনাকারী ( $fd
) এ তা দেখার জন্য এবং কী:
pv -d "$pid:$fd"
বা:
progress -mp "$pid"
আমার একটি সামান্য পার্ল স্ক্রিপ্ট রয়েছে যা আমি আমার বাশ পরিবেশে একটি ফাংশন হিসাবে রেখেছি:
fileSizeChange <file> [seconds]
ঘুমের সেকেন্ড 1 এ ডিফল্ট হয়।
fileSizeChange() {
perl -e '
$file = shift; die "no file [$file]" unless -f $file;
$sleep = shift; $sleep = 1 unless $sleep =~ /^[0-9]+$/;
$format = "%0.2f %0.2f\n";
while(1){
$size = ((stat($file))[7]);
$change = $size - $lastsize;
printf $format, $size/1024/1024, $change/1024/1024/$sleep;
sleep $sleep;
$lastsize = $size;
}' "$1" "$2"
}
নিম্নলিখিত শেল ফাংশন একটি ফাইল বা ডিরেক্টরি নিরীক্ষণ করে এবং থ্রুপুট / লেখার গতির একটি প্রাক্কলন দেখায়। দিয়ে মৃত্যুদণ্ড কার্যকর করুন monitorio <target_file_or_directory>
। যদি আপনার সিস্টেমে ডু না থাকে তবে যদি আপনি এম্বেড থাকা সিস্টেমে আইও থ্রুপুট পর্যবেক্ষণ করেন তবে তা হতে পারে তবে আপনি পরিবর্তে এলএস ব্যবহার করতে পারেন (কোডটিতে মন্তব্য দেখুন)
monitorio () {
# show write speed for file or directory
interval="10"
target="$1"
size=$(du -ks "$target" | awk '{print $1}')
firstrun="1"
echo ""
while [ 1 ]; do
prevsize=$size
size=$(du -ks "$target" | awk '{print $1}')
#size=$(ls -l "$1" | awk '{print $5/1024}')
kb=$((${size} - ${prevsize}))
kbmin=$((${kb}* (60/${interval}) ))
kbhour=$((${kbmin}*60))
# exit if this is not first loop & file size has not changed
if [ $firstrun -ne 1 ] && [ $kb -eq 0 ]; then break; fi
echo -e "\e[1A $target changed ${kb}KB ${kbmin}KB/min ${kbhour}KB/hour size: ${size}KB"
firstrun=0
sleep $interval
done
}
উদাহরণস্বরূপ ব্যবহার:
user@host:~$ dd if=/dev/zero of=/tmp/zero bs=1 count=50000000 &
user@host:~$ monitorio /tmp/zero
/tmp/zero changed 4KB 24KB/min 1440KB/hour size: 4164KB
/tmp/zero changed 9168KB 55008KB/min 3300480KB/hour size: 13332KB
/tmp/zero changed 9276KB 55656KB/min 3339360KB/hour size: 22608KB
/tmp/zero changed 8856KB 53136KB/min 3188160KB/hour size: 31464KB
^C
user@host:~$ killall dd; rm /tmp/zero
yum install pv
এটি করতে সক্ষম হতে একটি সেন্টোস / রেডহ্যাট সিস্টেমের প্রয়োজন ;-)