====== Ubuntu - Systemd - Timers ====== To have a systemd service not start automatically at system boot time, but instead to run at a specific time. * Create a systemd timer for the systemd service. ---- ===== Example ===== Create a systemd service (/etc/systemd/system/iris.service) for the Iris eye protection software. [Unit] Description=Iris Eye Protection Software After=lightdm.service [Service] Type=oneshot Environment=DISPLAY=:0 User=your_username ExecStart=/bin/bash -c 'DISPLAY=:0 xhost 127.0.0.1 && /opt/iris/Iris.sh' KillSignal=SIGINT Restart=on-failure RestartSec=2 [Install] WantedBy=multi-user.target ---- ===== To have it automatically start at boot time ===== sudo systemctl enable iris.service ---- ===== To start only at night ===== Create a systemd timer. sudo vi /etc/systemd/system/iris.timer ...add the following lines in this file: [Unit] Description=Iris Night Mode Timer Requires=iris.service [Timer] Unit=iris.service OnCalendar=*-*-* 18:00:00 [Install] WantedBy=timers.target **NOTE:** This systemd timer will start the iris.service at 18:00:00 every day. ---- ===== Enable this systemd timer ===== sudo systemctl enable iris.timer ---- ===== Check the status of this timer ===== sudo systemctl status iris.timer returns: ● iris.timer - Iris Night Mode Timer Loaded: loaded (/etc/systemd/system/iris.timer; enabled; vendor preset: enabled) Active: active (waiting) since Sat 2023-06-03 17:32:12 +00; 24min ago Trigger: Sat 2023-06-03 18:00:00 +00; 22h left Triggers: ● iris.service