コンピュータがログアウトするのを防ぐ簡単な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として設定する必要があります。
したがって、サービスを正常に実行するには2つのオプションがあります。
- に変更
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でこれらのサービスをテストし、正常に実行されました。