นี่คือความพยายามของฉันในการสร้างสคริปต์ที่จะใช้ "การเลื่อนเมาส์" เพื่อป้องกันไม่ให้หน้าจอว่างขณะดูวิดีโอ ฉันหวังว่าจะใช้ค่าสำหรับกระบวนการ CPU% สูงสุดในtop
และหากการใช้งาน CPU สูงกว่า 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
จากนั้นฉันรายงานรหัสนี้ที่ Ubuntu Forums และVaphell ก็ทำงานต่อไป ด้านล่างเป็นเวอร์ชันของ Vaphell และเป็นสิ่งที่ฉันใช้:
#!/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
ตามที่แนะนำโดย Raphael ด้านล่าง
-gt
คาดว่าตัวถูกดำเนินการจำนวนเต็มไม่ใช่จุดลอยตัว และฉันไม่แน่ใจว่าทำไมคุณกำลังใช้((
...))
มากกว่าแค่...[
]
หรือสาเหตุที่คุณใช้ CPU% เป็นตัวกระตุ้น ... หรือแม้แต่สาเหตุที่คุณแยกการใช้ประโยชน์ CPU% จากโปรแกรมคำสาปเช่นส่วนบนแทนที่จะเป็นแบบอื่นps -heo %C --sort -%cpu | head -1