
これは、ビデオを視聴中に画面が空白になるのを防ぐために「マウスの移動」を使用するスクリプトを作成する試みです。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 のバージョンであり、私が使用しているものです。
#!/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
答え1
使用できます
xset -dpms; xset s off
画面が真っ暗になるのを防ぎます。
これを再度有効にするには
xset +dpms; xset s on
したがって、-dpms
電力節約機能が無効になり、モニター全体の電源がオフになり、s off
X サーバーのスクリーン セーバー機能もオフになります。
xscreensaver
これは、コメントで言及されているでは機能しません。
答え2
いくつか問題があります。まず、top
毎回2回の反復が必要になります。私の回答を参照してください。ここバグレポートここ。
もう 1 つの問題は、bash は浮動小数点演算を行わないため、CPU 使用率が のような場合6.2
、スクリプトが壊れてしまうことです。bash は単純に「複雑な」算術演算用に設計されていません。この問題を回避する 1 つの方法は、チェックをコマンド内に.2
移動することです。>5
awk
#!/usr/bin/env bash
sleep_period=60s
while true; do
until top -bn 2 -d 0.01 | sed -nrs '8p' | awk '{if($9>5){exit 1}else{exit 0}}'; do
xdotool mousemove 0 100
xdotool mousemove 0 50
sleep ${sleep_period}
done
sleep ${sleep_period}
done
答え3
まず、xdotool と rand をインストールする必要があります。Ubuntu の例:
sudo apt install xdotool rand
次に、ターミナルで次のワンライナーを実行します (ユーザーとして)。
eval $(xdotool getdisplaygeometry --shell); while true; do xdotool mousemove `rand -M $WIDTH` `rand -M $HEIGHT` && sleep $((`rand -M 300` + 120)); done;