// ghid Linux

Cron și automatizare în Linux

Un task automat nu este complet doar pentru că rulează la ora potrivită. Trebuie să fie predictibil, logat, protejat împotriva execuțiilor suprapuse și ușor de diagnosticat.

Sintaxa crontab

O intrare cron are câmpuri pentru minut, oră, ziua lunii, lună și ziua săptămânii. Editează cu crontab -e și verifică cu crontab -l. Pentru joburile de sistem există și fișiere sub /etc/cron.*.

Mediul cron este diferit

Cron rulează cu un mediu minimal. Un script care merge în terminal poate eșua în cron din cauza PATH-ului, directorului curent sau variabilelor lipsă. Folosește căi absolute și setează explicit mediul necesar.

Loguri și coduri de ieșire

Redirecționează stdout și stderr într-un log relevant sau către sistemul central de logging. Scriptul trebuie să întoarcă un cod de ieșire corect, astfel încât eroarea să poată fi detectată automat.

Evită execuțiile suprapuse

Pentru joburi care pot dura mai mult decât intervalul de programare, folosește locking, de exemplu flock. Astfel previi două instanțe simultane care pot corupe date sau dubla procesarea.

Cron vs systemd timers

Systemd timers oferă integrare cu unitățile systemd, logging în journal și opțiuni mai bogate. Cron rămâne simplu și portabil. Alege în funcție de platformă și complexitate.

Automatizează responsabil

Începe cu acțiuni idempotente și verificări. Pentru modificări destructive, construiește mod dry-run sau condiții clare. Învață mai mult în Bash scripting.

Vrei să transformi teoria în practică? Vezi cursurile Linux și traseele Linux Advanced, LPIC-1 și Bash.

Întrebări frecvente

De ce scriptul merge manual dar nu în cron?

Cel mai des din cauza PATH-ului, variabilelor de mediu, permisiunilor sau directorului curent.

Este systemd timer mai bun decât cron?

Nu universal. Este mai integrat pe sisteme cu systemd, în timp ce cron este foarte simplu și larg disponibil.