Ce face systemd timers (systemctl list-timers)
Un timer systemd este o unitate .timer care pornește, la momentele stabilite, o unitate .service cu același nume. Serviciul conține comanda, iar timerul conține programul: OnCalendar= pentru date și ore (ca la cron) sau OnBootSec= / OnUnitActiveSec= pentru intervale relative.
Față de cron, ieșirea ajunge automat în jurnal (journalctl -u nume.service), serviciul are limitele și dependențele systemd, iar cu Persistent=true o execuție ratată (sistemul era oprit) se face la următoarea pornire.
systemctl list-timers arată când rulează data viitoare fiecare timer (NEXT, LEFT), când a rulat ultima dată (LAST, PASSED) și ce unitate pornește (ACTIVATES). Expresiile OnCalendar se verifică înainte cu systemd-analyze calendar.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
OnCalendar= |
Program calendaristic: daily, weekly, *-*-* 03:00:00, Mon..Fri 08:30. |
OnBootSec=, OnUnitActiveSec= |
Intervale relative: la N timp după pornire, respectiv după ultima activare. |
Persistent=true |
Rulează la pornire execuțiile ratate cât timp sistemul a fost oprit. |
RandomizedDelaySec= |
Adaugă o întârziere aleatorie, ca mai multe servere să nu pornească sarcina simultan. |
list-timers --all |
Include și timerele încărcate, dar inactive. |
enable --now NUME.timer |
Activează timerul la pornire și îl pornește imediat. |
Exemple
Exemplul 1: Un backup zilnic: serviciul și timerul
Două fișiere în /etc/systemd/system/. Serviciul este de tip oneshot (rulează și se termină); timerul îl pornește în fiecare noapte la 02:30. Apoi reîncărcăm configurația și activăm timerul (nu serviciul).
# /etc/systemd/system/backup-site.service
[Unit]
Description=Backup zilnic pentru dexblog
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup_site.sh
# /etc/systemd/system/backup-site.timer
[Unit]
Description=Pornește backup-site.service în fiecare noapte
[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
[Install]
WantedBy=timers.target
# comenzile de activare
sudo systemctl daemon-reload
sudo systemctl enable --now backup-site.timer
Ieșire în terminal
Created symlink '/etc/systemd/system/timers.target.wants/backup-site.timer' → '/etc/systemd/system/backup-site.timer'.
Exemplul 2: Lista timerelor active
Pe lângă timerul nostru apar timerele sistemului (de exemplu rotirea jurnalelor).
systemctl list-timers
Ieșire în terminal
NEXT LEFT LAST PASSED UNIT ACTIVATES
Mon 2026-10-26 00:00:00 EET 9h left Sun 2026-10-25 00:00:01 EET 14h ago logrotate.timer logrotate.service
Mon 2026-10-26 02:30:00 EET 12h left - - backup-site.timer backup-site.service
Mon 2026-10-26 06:41:12 EET 16h left Sun 2026-10-25 06:12:40 EET 8h ago apt-daily-upgrade.timer apt-daily-upgrade.service
3 timers listed.
Pass --all to see loaded but inactive timers, too.
Exemplul 3: Verificarea unei expresii OnCalendar
systemd-analyze calendar arată forma normalizată și următoarea execuție, înainte să pui expresia în timer.
systemd-analyze calendar "Mon..Fri 08:30"
Ieșire în terminal
Original form: Mon..Fri 08:30
Normalized form: Mon..Fri *-*-* 08:30:00
Next elapse: Mon 2026-10-26 08:30:00 EET
(in UTC): Mon 2026-10-26 06:30:00 UTC
From now: 18h left
Greșeli frecvente
- Activarea serviciului în loc de timer:
systemctl enable backup-site.servicenu programează nimic. Activezibackup-site.timer. - Uitarea lui
systemctl daemon-reloaddupă ce creezi sau modifici fișierele de unitate. - Nume diferite pentru
.timerși.servicefărăUnit=în secțiunea[Timer]: implicit, timerul pornește serviciul cu același nume.
Comenzi înrudite
systemctl: Controlează sistemul de inițializare systemd și administrează serviciile (demoni de fundal).journalctl: Interoghează și filtrează jurnalele centrale de sistem gestionate de serviciul systemd-journald.at: Programează o comandă să ruleze o singură dată, la o oră anume, spre deosebire de cron, care repetă sarcinile.