Cron Linuxis — crontabi süntaks ja valmis näited
Cron-avaldiste kalkulaator
minut tund kuupäev kuu nädalapäev. Kirjeldus ja lähimad käivitused arvutatakse automaatselt.Cron on Linuxi standardne ülesannete ajastaja: see käivitab käske ajakava järgi (iga minut, tund, päev jne). Ajakava määratakse crontab-failis viie väljaga. Vaatame süntaksi läbi ja toome valmis näited.
Crontabi süntaks
Iga ülesande rida koosneb viiest ajaväljast ja käsust:
* * * * * käsk
│ │ │ │ │
│ │ │ │ └─ nädalapäev (0–7, kus 0 ja 7 on pühapäev)
│ │ │ └─── kuu (1–12)
│ │ └───── kuupäev (1–31)
│ └─────── tund (0–23)
└───────── minut (0–59)
Erimärgid:
*— suvaline väärtus;*/5— iga 5 ühiku järel (näiteks iga 5 minuti järel);1,15— väärtuste loend;9-18— vahemik.
Kuidas crontabi redigeerida
Oma ülesannete nimekirja avamiseks:
crontab -e
Praeguste ülesannete vaatamiseks:
crontab -l
Muudatused rakenduvad pärast salvestamist automaatselt — midagi taaskäivitada ei ole vaja.
Ajakavade näited
| Ajakava | Rida | Millal käivitub |
|---|---|---|
| Iga minut | * * * * * |
igal minutil |
| Iga 5 minuti järel | */5 * * * * |
0, 5, 10… |
| Iga tund | 0 * * * * |
tunni alguses |
| Iga päev kell 3:30 | 30 3 * * * |
kord ööpäevas |
| Tööpäeviti kell 9:00 | 0 9 * * 1-5 |
E–R |
| Kuu 1. kuupäeval | 0 0 1 * * |
kord kuus |
Valmis ülesannete näited:
# Andmebaasi varukoopia iga päev kell 2:30 öösel
30 2 * * * /usr/local/bin/backup.sh
# Ajutiste failide puhastus igal pühapäeval kell 4:00
0 4 * * 0 find /tmp -type f -mtime +7 -delete
# Saidi kontroll iga 10 minuti järel
*/10 * * * * curl -s https://example.com > /dev/null
Eristringid
Viie välja asemel võib kasutada mugavaid varjunimesid:
@reboot /path/script.sh # serveri käivitumisel
@daily /path/script.sh # kord ööpäevas keskööl
@hourly /path/script.sh # kord tunnis
@weekly /path/script.sh # kord nädalas
Logimine ja silumine
Cron ei kuva tulemust ekraanile. Et näha, mis toimub, suuna väljund faili:
0 2 * * * /path/backup.sh >> /var/log/backup.log 2>&1
2>&1 suunab nii vead kui tavalise väljundi ühte logisse.
Kontrollida, kas cron ülesandeid üldse täidab, saab süsteemilogist:
grep CRON /var/log/syslog
Sagedased põhjused, miks ülesanne ei tööta
- Suhtelised teed. Cron käivitub kärbitud keskkonnas. Kirjuta käskude ja failide täisteed (
/usr/bin/php, mittephp). - Keskkonnamuutujad.
PATHon cronis minimaalne. Määra vajalikud muutujad crontabi alguses või skriptis. - Puuduvad käivitusõigused. Tee skript käivitatavaks:
chmod +x /path/script.sh. - Puuduv reavahetus. Crontabi viimane rida peab lõppema reavahetusega.
Korduma kippuvad küsimused
Mille poolest erineb kasutaja crontab süsteemsest?
crontab -e redigeerib praeguse kasutaja ülesandeid. Süsteemsed ülesanded asuvad failides /etc/crontab ja /etc/cron.d/, kus märgitakse lisaks kasutaja, kelle nimel käsk käivitatakse.
Miks ülesanne töötab käsitsi, aga croni kaudu mitte?
Kõige sagedamini keskkonna tõttu: cron ei tea sinu PATH-i ega muutujaid. Kasuta absoluutseid teid ja määra muutujad skriptis selgesõnaliselt.
Kuidas käivitada ülesanne root-kasutaja nimel?
Redigeeri rooti crontabi käsuga sudo crontab -e või lisa ülesanne kataloogi /etc/cron.d/, märkides kasutajaks root.
Kas cronile on alternatiivi? Jah, systemd timerid on paindlikum ja paremini logitav alternatiiv. Kuid cron on lihtsam ja olemas praktiliselt igas serveris, seega jääb see standardiks.
Kokkuvõte
Cron katab peaaegu iga ajakavajärgse automatiseerimise: varukoopiad, puhastuse, kontrollid. Õpi selgeks viie välja süntaks, kasuta alati absoluutseid teid ja logi väljund — siis täituvad ülesanded stabiilselt.
Vajad serverit oma ülesannete ja skriptide jaoks? Võta Linuxi VPS, vali pakett jaotisest VPS-i rent või telli Serverite haldus.