컴퓨터가 로그아웃되는 것을 방지하는 간단한 flutter 스크립트가 있습니다.
# /home/fny/jiggle.sh
randint() {
if [ -z "$1" ]; then
echo "Usage: randint <max>"
return 1
fi
expr $(tr -dc 0-9 < /dev/urandom | head -c 10) % $(expr $1 + 1)
}
while :; do
if [ $(xprintidle) -gt 60000 ]; then # if idle longer than 1 min
x=$(randint 500)
y=$(randint 500)
echo "jiggling to $x $y"
xdotool mousemove $x $y
fi
sleep 300 # check every 5 minutes
done
나는 이것을 간단한 지터 서비스로 바꾸기로 결정했습니다.
# /home/fny/.config/systemd/user/jiggle.service
[Unit]
Description=jiggle
[Service]
Type=simple
ExecStart=/bin/sh /home/fny/jiggle.sh
Restart=always
[Install]
WantedBy=multi-user.target
필요한 systemctl 주문을 실행했습니다.
systemctl --user daemon-reload
systemctl --user enable jiggle
systemctl --user start jiggle
나는 내 서비스를 확인하기로 결정했습니다. 활성화되었지만 죽었습니다. 왜?
systemctl --user status jiggle
● jiggle.service - jiggle
Loaded: loaded (/home/fny/.config/systemd/user/jiggle.service; enabled>
Active: inactive (dead)
답변1
문제가 있는 것 같습니다. WantedBy=multi-user.target
에 따르면이 답변:
--user 모드에는 multi-user.target이 없습니다. 사용자 서비스는 WantedBy=default.target으로 구성되어야 합니다.
따라서 서비스를 성공적으로 실행하는 데는 두 가지 옵션이 있습니다.
- 로 변경
WantedBy=default.target.
:
# /home/fny/.config/systemd/user/jiggle.service
[Unit]
Description=jiggle
[Service]
Type=simple
ExecStart=/bin/sh /home/fny/jiggle.sh
Restart=always
[Install]
WantedBy=default.target
- systemd 서비스를 다음과 같이 사용하십시오.시스템 서비스설마사용자 서비스. 먼저 를 사용 하는 대신
jiggle servicce
를 복사해야 합니다 . 사용 중인 소프트웨어가 GUI 세션에 의존하기 때문에 사용하는 것이 좋습니다 ./etc/systemd/system
systemctl --user enable jiggle
sudo systemctl enable jiggle
WantedBy=graphical.target
#/etc/systemd/system/jiggle.service
[Unit]
Description=jiggle
[Service]
Type=simple
ExecStart=/bin/sh /home/fny/jiggle.sh
Restart=always
[Install]
WantedBy=graphical.target
Redhat 9.0에서 이러한 서비스를 테스트했으며 성공적으로 실행되었습니다.