Cron plānotājs Linux — crontab sintakse un piemēri
Cron izteiksmju kalkulators
minūte stunda mēneša_diena mēnesis nedēļas_diena. Apraksts un tuvākās izpildes tiks aprēķinātas automātiski.Cron ir standarta uzdevumu plānotājs Linux: tas palaiž komandas pēc grafika (katru minūti, stundu, dienu utt.). Grafiku nosaka pieci lauki crontab failā. Apskatīsim sintaksi un dosim gatavus piemērus.
Crontab sintakse
Katra uzdevuma rinda sastāv no pieciem laika laukiem un komandas:
* * * * * komanda
│ │ │ │ │
│ │ │ │ └─ nedēļas diena (0–7, kur 0 un 7 ir svētdiena)
│ │ │ └─── mēnesis (1–12)
│ │ └───── mēneša diena (1–31)
│ └─────── stunda (0–23)
└───────── minūte (0–59)
Speciālie simboli:
*— jebkura vērtība;*/5— ik pēc 5 vienībām (piemēram, ik pēc 5 minūtēm);1,15— vērtību saraksts;9-18— diapazons.
Kā rediģēt crontab
Atvērt savu uzdevumu sarakstu rediģēšanai:
crontab -e
Apskatīt pašreizējos uzdevumus:
crontab -l
Izmaiņas stājas spēkā automātiski pēc saglabāšanas — neko pārstartēt nav vajadzīgs.
Grafiku piemēri
| Grafiks | Rinda | Kad izpildās |
|---|---|---|
| Katru minūti | * * * * * |
ik minūti |
| Ik pēc 5 minūtēm | */5 * * * * |
0, 5, 10… |
| Katru stundu | 0 * * * * |
stundas sākumā |
| Katru dienu plkst. 3:30 | 30 3 * * * |
reizi diennaktī |
| Darbdienās plkst. 9:00 | 0 9 * * 1-5 |
pirmdiena–piektdiena |
| Mēneša 1. datumā | 0 0 1 * * |
reizi mēnesī |
Gatavi uzdevumu piemēri:
# Datubāzes dublējums katru dienu plkst. 2:30 naktī
30 2 * * * /usr/local/bin/backup.sh
# Pagaidu failu tīrīšana katru svētdienu plkst. 4:00
0 4 * * 0 find /tmp -type f -mtime +7 -delete
# Vietnes pārbaude ik pēc 10 minūtēm
*/10 * * * * curl -s https://example.com > /dev/null
Īpašās rindas
Piecu lauku vietā var izmantot ērtus aizstājvārdus:
@reboot /path/script.sh # servera ielādes brīdī
@daily /path/script.sh # reizi diennaktī pusnaktī
@hourly /path/script.sh # reizi stundā
@weekly /path/script.sh # reizi nedēļā
Žurnalēšana un atkļūdošana
Cron neizvada rezultātu ekrānā. Lai redzētu, kas notiek, novirziet izvadi uz failu:
0 2 * * * /path/backup.sh >> /var/log/backup.log 2>&1
2>&1 novirza gan kļūdas, gan parasto izvadi vienā žurnālā.
Pārbaudīt, vai cron vispār izpilda uzdevumus, var sistēmas žurnālā:
grep CRON /var/log/syslog
Biežākie iemesli, kāpēc uzdevums nestrādā
- Relatīvie ceļi. Cron darbojas apgrieztā vidē. Norādiet pilnus ceļus līdz komandām un failiem (
/usr/bin/php, nevisphp). - Vides mainīgie.
PATHcron vidē ir minimāls. Uzstādiet vajadzīgos mainīgos crontab sākumā vai skriptā. - Nav izpildes tiesību. Padariet skriptu izpildāmu:
chmod +x /path/script.sh. - Aizmirsts rindas pārnesums. Pēdējai crontab rindai jābeidzas ar rindas pārnesumu.
Biežāk uzdotie jautājumi
Ar ko lietotāja crontab atšķiras no sistēmas crontab?
crontab -e rediģē pašreizējā lietotāja uzdevumus. Sistēmas uzdevumi atrodas failos /etc/crontab un /etc/cron.d/, kur papildus norāda lietotāju, kura vārdā izpildīt komandu.
Kāpēc uzdevums strādā manuāli, bet ne pa cron?
Visbiežāk vides dēļ: cron nezina jūsu PATH un mainīgos. Izmantojiet absolūtos ceļus un norādiet mainīgos skriptā tieši.
Kā palaist uzdevumu root vārdā?
Rediģējiet root crontab ar komandu sudo crontab -e vai pievienojiet uzdevumu mapē /etc/cron.d/, norādot lietotāju root.
Vai cron ir alternatīva? Jā, systemd timers ir elastīgāka un labāk žurnalējama alternatīva. Taču cron ir vienkāršāks un ir praktiski jebkurā serverī, tāpēc paliek par standartu.
Kopsavilkums
Cron nosedz gandrīz jebkuru automatizāciju pēc grafika: dublējumus, tīrīšanu, pārbaudes. Apgūstiet piecu lauku sintaksi, vienmēr izmantojiet absolūtos ceļus un žurnalējiet izvadi — un uzdevumi izpildīsies stabili.
Vajadzīgs serveris saviem uzdevumiem un skriptiem? Paņemiet Linux VPS, noformējiet VPS nomu vai pasūtiet Serveru administrēšanu.