Cron ir datora programma, ko izmanto, lai automātiski izpildītu uzdevumus noteiktos laika intervālos. To izmanto UNIX datoru operētājsistēmās un UNIX līdzīgās operētājsistēmās, piemēram, Linux. Cron ir paredzēts atkārtojošu uzdevumu plānošanai — no sistēmas uzturēšanas un dublēšanas līdz regulārai datu lejupielādei vai e‑pasta apstrādei.
Cron bieži izmanto, lai automatizētu uzdevumus, kas saistīti ar datora vai datortīkla uzturēšanu vai administrēšanu, taču to var izmantot arī daudziem citiem mērķiem — piemēram, failu lejupielādei no interneta un e-pasta sūtījumu apstrādei noteiktā laikā vai datumā.
Datorprogrammas nosaukums cron cēlies no grieķu vārda χρόνος (chronos), kas nozīmē "laiks".
Kā darbojas crontab
Cron plānošana tiek iestatīta, rediģējot failu, ko sauc par crontab (cron tabula). Crontab ieraksts satur laika specifikāciju un izpildāmo komandu. Parasti crontab rediģē ar komandu crontab -e, bet ir arī sistēmas failu (piem., /etc/crontab vai /etc/cron.d/) un lietotāju crontab failus.
Crontab formāts
Parastā crontab rinda izskatās šādi (pieci lauka + komanda):
- minūte (0–59)
- stunda (0–23)
- mēneša diena (1–31)
- mēnesis (1–12 vai jan–dec)
- nedēļas diena (0–7, kur 0 un 7 abi nozīmē svētdienu vai sun–sat)
Piemērs:
0 2 * * * /usr/bin/rsync -av /dati /backup/
Šī rinda palaidīs rsync katru dienu plkst. 02:00.
Papildu sintakse un īsie atslēgvārdi
- */5 — katru 5. minūti (piem.,
*/15 * * * *— katras 15 minūtes) - komati (piem.,
0 6,18 * * *— plkst. 06:00 un 18:00) - diapazoni ar svītru (piem.,
0 9-17 * * 1-5— darba dienās ik stundu no 09:00 līdz 17:00) - speciālie atslēgvārdi:
@reboot,@hourly,@daily,@weekly,@monthly,@yearly
Sistēmas vs lietotāja crontab
Ir atšķirība starp sistēmas crontab (piem., /etc/crontab) un lietotāja crontab. Sistēmas crontab bieži satur pievienoto lauku, kur jānorāda, kurš lietotājs komandu izpildīs. Lietotāja crontab tiek saistīta ar konkrētu lietotāju un izpildīs komandas ar šī lietotāja tiesībām.
Kā droši izmantot cron
- Vienmēr norādiet pilnas ceļš uz izpildāmajām programmām (piem.,
/usr/bin/python3), jo crontab var darboties ar ierobežotuPATH. - Pāradresējiet komandu izvadi uz failu vai nulli, lai izvairītos no liekas e‑pasta sūtīšanas:
/path/to/command >/var/log/command.log 2>&1. - Ja vēlaties saņemt paziņojumus pa e‑pastu par uzdevuma rezultātu, varat iestatīt
MAILTOcrontab augšā. - Izmantojiet atbilstošas piekļuves tiesības un pārbaudiet, kuri lietotāji drīkst izmantot cron, skatoties
/etc/cron.allowun/etc/cron.deny.
Problēmu novēršana un žurnāli
Ja cron darbi netiek izpildīti, pārbaudiet:
- crontab sintaksi — nepareiza lauka vērtība apturēs rindu izpildi;
- vai cron serviss darbojas (piem.,
systemctl status cronvaiservice cron status); - žurnālus — parasti
/var/log/cronvai sistēma‑žurnālos (piem.,/var/log/syslog).
Papildus rīki un alternatīvas
Ja sistēma bieži tiek izslēgta vai atspējota, var lietot anacron, kas nodrošina, ka periodiskie uzdevumi tiek palaisti, kad mašīna tiks ieslēgta. Mūsdienu Linux sistēmās var izmantot arī systemd timers kā elastīgāku alternatīvu cron, it īpaši ja nepieciešama sarežģītāka atkarību un stāvokļu pārvaldība.
Īsi komandrindu piemēri
- Rediģēt crontab:
crontab -e - Sarakstīt pašreizējo crontab:
crontab -l - Noņemt crontab:
crontab -r - Piemēra rinda, kas palaidīs skriptu katru dienu pusnaktī:
0 0 * * * /home/user/scripts/daily_backup.sh >/home/user/logs/backup.log 2>&1
Izmantojot cron, svarīgi domāt par drošību, pilnām ceļu norādēm un atbilstošu izvades pārvaldību. Pareiza konfigurācija ļaus uzticami automatizēt ikdienas uzdevumus un samazināt manuālo administrēšanu.