!["마우스 움직임"을 사용하여 화면 공백을 방지하는 스크립트가 작동하지 않습니다.](https://linux55.com/image/50488/%22%EB%A7%88%EC%9A%B0%EC%8A%A4%20%EC%9B%80%EC%A7%81%EC%9E%84%22%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%99%94%EB%A9%B4%20%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
이것은 비디오를 보는 동안 화면이 꺼지는 것을 방지하기 위해 "마우스 움직임"을 사용하는 스크립트를 만들려는 나의 시도입니다. 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 포럼에 이 코드를 보고했습니다.와펠이에 대해 추가 연구가 수행되었습니다. 제가 사용하고 있는 Vapell 버전은 다음과 같습니다.
#!/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번의 반복이 필요합니다. 내 답변을 참조하세요.여기및 버그 보고서여기.
또 다른 문제는 bash가 부동 소수점 작업을 수행하지 않기 때문에 CPU 사용량이 비슷하면 6.2
스크립트 .2
가 중단된다는 것입니다. Bash는 "복잡한" 산술 연산을 위해 설계되지 않았습니다. 이 문제를 해결하는 한 가지 방법은 >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;