{{tag>[linux systemd time timers cron]}}
=====Systemd timers, example=====
Lets say we want to start ''/home/heather/screenshot.sh'' every day at 23:58, with the parameter 4.
* Create a service file ''/etc/systemd/system/HeatherScreenshot.service'':
[Unit]
Description=HeatherScreenshot
[Service]
User=heather
Type=simple
ExecStart=/home/heather/screenshot.sh 4
* Create a timer file ''/etc/systemd/system/HeatherScreenshot.timer'':
[Unit]
Description=Runs HeatherScreenshot
[Timer]
# DayOfWeek Year-Month-Day Hour:Minute:Second
OnCalendar=23:58:00
Unit=HeatherScreenshot.service
[Install]
WantedBy=multi-user.target
* Test run the static service:systemctl start HeatherScreenshot.service
* Start and enable the timer:
systemctl daemon-reload # if you modified the files
systemctl start HeatherScreenshot.timer
systemctl enable HeatherScreenshot.timer
* Show timer status:systemctl list-timers --all
NEXT LEFT LAST PASSED UNIT ACTIVATES
Fri 2016-12-30 22:47:15 CET 4h 35min left Thu 2016-12-29 22:47:15 CET 19h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Sat 2016-12-31 00:00:00 CET 5h 47min left Fri 2016-12-30 00:00:05 CET 18h ago logrotate.timer logrotate.service
Sat 2016-12-31 00:00:00 CET 5h 47min left Fri 2016-12-30 00:00:05 CET 18h ago man-db.timer man-db.service
Sat 2016-12-31 00:00:00 CET 5h 47min left Fri 2016-12-30 00:00:05 CET 18h ago shadow.timer shadow.service
Sat 2016-12-31 00:59:55 CET 6h left Fri 2016-12-30 12:27:32 CET 5h 44min ago HeatherScreenshot.timer HeatherScreenshot.service
5 timers listed.
* To disable a timer, first stop and than disable it:
systemctl stop HeatherScreenshot.timer
systemctl disable HeatherScreenshot.timer