这是我尝试制作一个脚本,该脚本将使用“鼠标移动”来防止在观看视频时出现屏幕空白。我希望将值用于最高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论坛上报告了此代码,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
IMO,您最好找出为什么您的视频播放器程序未禁用屏幕保护程序并进行修复。您使用哪个播放器?(例如图腾,vlc等)以及什么桌面/窗口管理器(gnome,xfce,lxde,kde等)以及哪个屏幕保护程序。
—
cas 2013年
是的,我之前遇到过vlc / gnome问题。iirc,我最终
—
cas 2013年
xset
按照下面Raphael的建议使用。
也许不止相关:xkcd.com/196
—
DanteTheEgregore
-gt
需要整数操作数,而不是浮点数。我不知道为什么你使用((
......))
而不仅仅是[
...]
。或为什么要使用CPU%作为触发器...或者甚至为什么要从诸如top之类的curses程序中提取CPU%的使用率,而不是类似的原因ps -heo %C --sort -%cpu | head -1