1.1 KiB
1.1 KiB
| tags | |||
|---|---|---|---|
|
Timed systemd units
In order to use systemd in the manner of cron (but with added benefits, such as being able to set the user to run as, environment variables and so on), you first create a timer template, e.g.:
# everyhour@.timer
[Unit]
Description=Run %i every hour
[Timer]
OnCalendar=*-*-* *:00:00
Persistent=true
Unit=%i.service
[Install]
WantedBy=timers.target
You can then pass in specific units using this template to systemctl.
As an example, this unit runs a simple bash script that pings a server:
# ping-eolas-api.service
[Unit]
Description=Ping Eolas API to check it is up
[Service]
User=thomas
Group=thomas
Type=oneshot
ExecStart=/home/thomas/self-host/scripts/ping_eolas-api.sh
Then when enabling the service, do the usual:
systemctl daemon-reload
But when enabling/starting, invoke the timer template, viz:
systemctl enable everyhour@ping-eolas-api.timer
systemctl start everyhour@ping-eolas-api.timer
The schema is:
[timer_template_name][service_name].template