Ini adalah usaha saya untuk membuat skrip yang akan menggunakan "gerakan mouse" untuk mencegah pengosongan layar saat menonton video. Saya berharap untuk menggunakan nilai untuk proses CPU% tertinggi top
dan jika penggunaan CPU melebihi 5%, perpindahan mouse harus terjadi.
#!/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
Sayangnya, itu tidak berhasil. Kesalahannya seperti ini:
[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 ")
Bagaimana cara saya memperbaikinya? (Harap perhatikan bahwa saya tidak berpengalaman dalam skrip.)
Berdasarkan jawaban di sini, saya mengumpulkan:
#!/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
Kemudian, saya melaporkan kode ini di Forum Ubuntu dan Vaphell mengerjakannya lebih lanjut. Di bawah ini adalah versi Vaphell dan apa yang saya gunakan:
#!/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
seperti yang disarankan oleh Raphael di bawah ini.
-gt
mengharapkan operan integer, bukan floating point. dan saya tidak yakin mengapa Anda menggunakan((
...))
bukan hanya[
...]
. atau mengapa Anda menggunakan CPU% sebagai pemicunya ... atau bahkan mengapa Anda mengekstraksi utilisasi CPU% dari program kutukan seperti atas daripada sesuatu sepertips -heo %C --sort -%cpu | head -1