এটি এমন একটি স্ক্রিপ্ট তৈরি করার আমার প্রচেষ্টা যা ভিডিওগুলি দেখার সময় স্ক্রীন ফাঁকা রোধ করতে "মাউস মুভ" ব্যবহার করবে। আমি সর্বাধিক সিপিইউ% প্রসেসের মানটি ব্যবহার করার আশা করছি top
এবং যদি সিপিইউ ব্যবহার 5% এর বেশি হয়, তবে একটি মাউস মুভ হওয়া উচিত।
#!/usr/bin/env bash
sleep_period=60s
while true; do
if (( $(top -bn 1 | sed -nrs '8p' | awk '{ print $9 }') -gt 5 )); then
while (( $(top -bn 1 | sed -nrs '8p' | awk '{ print $9 }') -gt 5 )); do
xdotool mousemove 0 100
xdotool mousemove 0 50
sleep ${sleep_period}
done
else
sleep ${sleep_period}
fi
done
দুর্ভাগ্যক্রমে, এটি কাজ করে না। ত্রুটিগুলি এরকম:
[07:20 PM] /bin $ noo.sh
/home/vasa1/bin/noo.sh: line 6: ((: 0.0 -gt 5 : syntax error: invalid arithmetic operator (error token is ".0 -gt 5 ")
/home/vasa1/bin/noo.sh: line 6: ((: 6.4 -gt 5 : syntax error: invalid arithmetic operator (error token is ".4 -gt 5 ")
আমি কিভাবে এটা ঠিক করব? (দয়া করে নোট করুন যে আমি স্ক্রিপ্টিংয়ের ক্ষেত্রে অভিজ্ঞ নই।)
উত্তরগুলির ভিত্তিতে এখানে আমি একত্রিত করেছি:
#!/usr/bin/env bash
sleep_period=5m
while true; do
if [[ $(top -bn 1 | sed -nrs '8p' | awk '{ print int($9) }') -gt 8 ]]; then
while [[ $(top -bn 1 | sed -nrs '8p' | awk '{ print int($9) }') -gt 8 ]]; do
xset -dpms; xset s off
xset +dpms; xset s on
sleep ${sleep_period}
done
else
sleep ${sleep_period}
fi
done
তারপরে, আমি এই কোডটি উবুন্টু ফোরামগুলিতে জানিয়েছি এবং ভ্যাফেল এটিতে আরও কাজ করেছে। নীচে ভ্যাফেলের সংস্করণ রয়েছে এবং এটি আমি ব্যবহার করছি:
#!/usr/bin/env bash
sleep_period=5m
while true; do
if top -bn 1 | awk 'NR==8 { exit !($9>8); }'; then
xset -dpms; xset s off
xset +dpms; xset s on
fi
sleep ${sleep_period}
done
xset
নীচে রাফেল পরামর্শ মত ব্যবহার করে শেষ ।
-gt
পূর্ণসংখ্যা অপারেশনগুলি প্রত্যাশা করে, ভাসমান পয়েন্ট নয়। এবং আমি নিশ্চিত করুন যে আপনি কেন ব্যবহার করছেন নই((
...))
বরং চেয়ে[
...]
। বা কেন আপনি ট্রিগার যেমন সিপিইউ% ব্যবহার করছি ... বা এমনকি তুমি কেন শীর্ষ মত বরং ভালো কিছু চেয়ে অভিশাপ প্রোগ্রাম থেকে CPU- র% ব্যবহার আহরণ করছিps -heo %C --sort -%cpu | head -1