bitlvl
SR

Objašnjenje systemd tajmera (OnCalendar)

Ukucajte OnCalendar izraz ili nalepite cron red za konverziju. Dobijate značenje, sledećih deset izvršavanja i kompletan par .timer + .service koji možete staviti u /etc/systemd/system.

Unit datoteke

  

Rezultati i poruke ovog alata prikazuju se na engleskom.

OnCalendar sintaksa

Format je [DanUNedelji] Datum Vreme, pri čemu je svaki deo opcion: Mon..Fri *-*-* 06:30:00. Dani u nedelji koriste troslovna imena sa .. opsezima i zarezima. Datum je YYYY-MM-DD sa * za bilo koji; vreme je HH:MM:SS (sekunde su podrazumevano 00). Svako polje prihvata liste (1,15), opsege (8..18) i korake (*/15 ili 0/15, 8..18/2). Prečice: minutely, hourly, daily, weekly, monthly, yearly, quarterly. Ime zone na kraju primenjuje izraz u toj zoni (*-*-* 09:00 Europe/Belgrade).

CronOnCalendar
*/5 * * * **-*-* *:*/5:00
0 * * * *hourly
30 6 * * 1-5Mon..Fri *-*-* 06:30:00
0 9 1 * **-*-01 09:00:00
0 3 * * 0Sun *-*-* 03:00:00
0 0 L * **-*~01 00:00:00 (poslednji dan u mesecu: ~ broji od kraja)

Šta tajmeri rade, a cron ne

  • Persistent=true: ako je mašina bila ugašena kada je tajmer trebalo da se okine, pokreni ga pri sledećem bootu. Cron ga jednostavno propusti (za to postoji anacron).
  • RandomizedDelaySec=: raspoređuje izvršavanja unutar prozora da flota mašina ne bi udarila server u istoj sekundi.
  • AccuracySec=: podrazumevano jedan minut; postavite 1s ako je tačno vreme bitno, ili duže da grupišete buđenja i štedite energiju.
  • Logovi idu u journal (journalctl -u ime.service), posao radi sa sandboxingom, zavisnostima i ograničenjima resursa servisa, a systemctl list-timers prikazuje sledeće i poslednje izvršavanje.

Provera izraza

systemd-analyze calendar "Mon..Fri *-*-* 06:30" ispisuje normalizovani oblik i sledeće okidanje, što ova stranica reprodukuje. Posle instaliranja tajmera: systemctl daemon-reload && systemctl enable --now ime.timer, zatim systemctl list-timers --all.

Pitanja

Zašto se moj tajmer pokrene jednom i nikad više?

Obično je tajmer pokrenut, ali nije omogućen (systemctl enable --now ime.timer), ili je servis koji okida oneshot bez odgovarajućeg timer unita. Proverite systemctl list-timers i journalctl -u ime.timer.

Kako da pokrenem tajmer kao običan korisnik?

Stavite unite u ~/.config/systemd/user/, koristite systemctl --user i pokrenite loginctl enable-linger $USER da bi se okidali i bez aktivne sesije prijave.

Da li OnCalendar koristi sistemsku vremensku zonu?

Da, osim ako se izraz ne završava imenom zone, što systemd 243+ podržava. Kontejnerske i cloud slike su obično u UTC; postavite zonu eksplicitno ako je raspored zamišljen u lokalnom vremenu.

Kako da izrazim „svakog radnog dana u 9 i 17“?

Mon..Fri *-*-* 09,17:00:00. Liste rade u bilo kom polju.