Systemd - 特定の日にユーザーログイン後にbashスクリプトを実行する

Systemd - 特定の日にユーザーログイン後にbashスクリプトを実行する

私はi3ウィンドウマネージャを使用しており、毎日リモートで作業しながらモニタを設定するスクリプトを実行したいと思います。火曜日、私は現場で作業していたが、別のスクリプトを実行したかった。私の問題を解決するためにbash条件文を使用することもできますが、起動/停止/再起動/アクティブ化/非アクティブ化よりもsystemdについてもっと学ぶ機会があります。

私のスクリプトは次のとおりです(ターミナルから起動すると正しく動作します)。

#!/bin/sh
xrandr --output eDP-1 --off --output HDMI-1 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output DP-1 --off --output DP-2 --off --output DP-3 --off --output DP-4 --off

これは私のデバイスです(systemctl --user start home_screen_setup.serviceを介して端末から起動した場合にのみ機能します)。

[Unit]
Description=Monitors setup when I work from home
After=graphical-session.target
BindsTo=graphical-session.target
PartOf=graphical-session.target
Requisite=graphical-session.target
ConditionEnvironment=DISPLAY
ConditionEnvironment=XAUTHORITY

[Service]
Type=oneshot
ExecStart=/home/userX/.screenlayout/home_setup.sh

[Install]
WantedBy=graphical-session.target

これは私のタイマーです。

[Unit]
Description=Setup my screen configuration on every day except Tuesday

[Timer]
#OnBootSec=15seconds
OnCalendar=Mon,Wed,Thu,Fri

[Install]
WantedBy=timers.target

いくつかのステータス出力:

userX@HP-ProBook-450:~$ systemctl --user status home_screen_setup.service
○ home_screen_setup.service - Disables laptop screen when I work from home
 Loaded: loaded (/home/userX/.config/systemd/user/home_screen_setup.service; enabled; vendor preset: enabled)
 Active: inactive (dead)
TriggeredBy: ● home_screen_setup.timer


userX@HP-ProBook-450:~$ systemctl --user status home_screen_setup.timer
● home_screen_setup.timer - Setup my screen configuration on every day except Tuesday
 Loaded: loaded (/home/userX/.config/systemd/user/home_screen_setup.timer; enabled; vendor preset: enabled)
 Active: active (waiting) since Sun 2024-03-03 12:00:22 CET; 1min 4s ago
Trigger: Mon 2024-03-04 00:00:00 CET; 11h left
Triggers: ● home_screen_setup.service

mar 03 12:00:22 HP-ProBook-450 systemd[2306]: Started Setup my screen configuration on every day except Tuesday.

私は何が間違っていましたか?

ベストアンサー1

おすすめ記事