Cron: definíció, működés és crontab használata UNIX/Linux rendszerekben
A Cron egy olyan számítógépes program (háttérben futó démon), amellyel ütemezetten, előre meghatározott időpontokban és időközönként automatikusan elvégezhetőek feladatok. A UNIX rendszerekben és a UNIX-hoz hasonló operációs rendszerekben, például a Linuxban széles körben használják. A Cron kiválóan alkalmas ismétlődő karbantartási és adminisztrációs munkák automatizálására, de gyakran alkalmazzák más feladatokra is, például fájlok letöltésére az internetről vagy e-mailek rendszeres letöltésére.
A cron elnevezés a görög χρόνος (kronosz) szóból származik, amely az időt jelenti. A Cron beállítása általában a crontab (cron táblázat) használatával történik: ez a fájl határozza meg, hogy milyen parancsokat kell futtatni, és mikor.
Működés röviden
- A cron démon folyamatosan fut a háttérben, és minden percben ellenőrzi a crontab bejegyzéseket.
- Ha egy bejegyzés ideje aktuálissá válik, a cron elindítja a hozzá tartozó parancsot a megfelelő felhasználó jogosultságaival.
- Ha a parancs kimenetét nem irányítjuk át, akkor a cron a kimenetet általában e-mailben elküldi a bejegyzés tulajdonosának (ha a MAILTO változó be van állítva), vagy a rendszer által meghatározott módon kezeli.
Crontab formátum és mezők
A crontab bejegyzések alapvető formátuma öt időmező + parancs:
- perc (0–59)
- óra (0–23)
- nap a hónapban (1–31)
- hónap (1–12 vagy rövid név: jan, feb …)
- a hét napja (0–7, ahol 0 és 7 is vasárnap; vagy rövid név: mon, tue …)
- parancs (a futtatandó parancs vagy a script teljes elérési útvonala)
Példák és gyakori szintaxisok:
- * — bármely érték (pl. minden perc, minden óra)
- lista (pl. 1,15,30) — konkrét értékek listája
- intervallum (pl. 1-5) — kezdő és vég érték
- léptetés (pl. */15) — minden 15. perc
Konkrét példák bejegyzésekre (felhasználói crontabban):
- 0 2 * * * /usr/local/bin/backup.sh — minden nap 02:00-kor lefutó mentés
- */15 * * * * /usr/local/bin/check-status.sh — minden 15. percben fut
- 30 6 1 * * /usr/local/bin/monthly-report.sh — minden hónap 1-jén 06:30-kor
- 0 5 * * 1-5 /usr/local/bin/workday-job.sh — minden munkanapon 05:00-kor
Speciális kulcsszavak
- @reboot — rendszerinduláskor futtatja a parancsot
- @yearly vagy @annually — évente egyszer (0 0 1 1 *)
- @monthly — havonta egyszer (0 0 1 * *)
- @weekly — hetente egyszer (0 0 * * 0)
- @daily vagy @midnight — naponta egyszer (0 0 * * *)
- @hourly — óránként (0 * * * *)
Crontab kezelése (parancsok)
- crontab -e — szerkeszti a jelenlegi felhasználó crontabját
- crontab -l — kilistázza a jelenlegi felhasználó bejegyzéseit
- crontab -r — eltávolítja a jelenlegi felhasználó crontabját
- crontab -u felhasználó -e — rendszergazdai jogosultsággal más felhasználó crontabját szerkeszthetjük
Rendszerszintű crontab és könyvtárak
- /etc/crontab — rendszer szintű crontab, itt általában plusz user mező is szerepel: perc óra nap hónap hét user parancs
- /etc/cron.d/ — konfigurációs fájlok könyvtára, amely hasonló formátumot használ, mint /etc/crontab
- /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/ — ezekbe a könyvtárakba helyezett végrehajtható fájlokat a rendszer futtatja a megfelelő időközönként (gyakran run-parts használatával)
Környezet, jogosultságok és jó gyakorlatok
- Crontabban érdemes teljes elérési utakat használni a parancsokra és fájlokra (pl. /usr/bin/python3), mert a cron által használt PATH gyakran korlátozott.
- Állítsuk be szükség szerint a MAILTO változót a crontab tetején, ha szeretnénk a kimenetet e-mailben kapni: MAILTO="[email protected]".
- Hibatűrés: irányítsuk át a stdout és stderr kimenetet log fájlba: /path/script.sh >> /var/log/script.log 2>&1.
- A crontab fájlban a megjegyzések #-szal kezdődnek.
- Győződjünk meg róla, hogy a futtatott script futtatható (chmod +x), és helyes shebang (pl. #!/bin/bash) található benne.
- Ügyeljünk az időzónára: a cron a rendszeridőt használja; ha más időzónát szeretnénk, azt egyértelműen kezelni kell.
Hibaelhárítás és naplózás
- Ellenőrizzük, hogy a cron démon fut-e: rendszerfüggő parancsokkal (pl. systemctl status cron vagy service cron status).
- Naplófájlok helye disztribúciótól függően: gyakran /var/log/syslog (Debian/Ubuntu) vagy /var/log/cron (RHEL/CentOS).
- Ha a parancs nem fut le, ellenőrizzük a crontab szintaxisát, jogosultságokat, sorvége karaktereket (Windows CRLF problémák), és a PATH/ENV beállításokat.
- A cron által visszaküldött e-maileket is ellenőrizzük (ha MAILTO be van állítva vagy alapértelmezett levelezés működik).
Alternatívák és kiegészítők
- Anacron — hasznos laptopoknál és gépeknél, amelyek nem futnak folyamatosan; biztosítja, hogy a napi/havi feladatokat akkor is lefuttassa, ha a gép a tervezett időben nem volt bekapcsolva.
- systemd timer — modern Linux rendszereken a systemd időzítői kínálnak rugalmas alternatívát a cron számára, jobb integrációval és részletesebb naplózással.
Összefoglalva: a Cron egyszerű és hatékony eszköz ismétlődő, időzített feladatok automatizálására UNIX/Linux rendszereken. A sikeres használathoz fontos a helyes crontab szintaxis, a teljes elérési utak alkalmazása, a kimenetek kezelése és a rendszer- vagy felhasználói crontabok közti különbség megértése.
Kérdések és válaszok
K: Mi az a Cron?
V: A Cron egy számítógépes program, amelyet a feladatok meghatározott időközönkénti ütemezésére használnak.
K: Hol használják a Cron-t?
V: A Cron-t a UNIX számítógépes operációs rendszerekben és a UNIX-hoz hasonló operációs rendszerekben, például a Linuxban használják.
K: Milyen feladatok ütemezhetők a Cron segítségével?
V: A legtöbb ismétlődő feladat ütemezhető a Cron segítségével. Gyakran használják a számítógép vagy számítógépes hálózat karbantartásával vagy adminisztrációjával kapcsolatos feladatok automatizálására, bár sok más feladatra is használható, például fájlok letöltésére az internetről és e-mailek letöltésére meghatározott időpontokban vagy időpontokban.
K: Honnan származik a Cron név?
V: A Cron számítógépes program neve a cron szóból ered, amely a görög χρόνος (kronosz) szóból származik, ami az időt jelenti.
K: Hogyan történik a Cron beállítása?
V: A Cron beállítása a crontab (cron táblázat) nevű fájl szerkesztésével történik. Ez a fájl felsorolja a számítógépen futtatandó konkrét feladatokat, és azt, hogy a feladatokat mikor kell futtatni.
K: Mi az a crontab?
V: A crontab egy olyan fájl, amely felsorolja a számítógépen futtatandó konkrét feladatokat és a feladatok futtatásának időpontját.
K: Milyen ismétlődő feladatokra használható a Cron?
V: A számítógép vagy számítógépes hálózat karbantartásával vagy adminisztrációjával kapcsolatos legtöbb ismétlődő feladat automatizálható a Cron segítségével. Számos más feladatra is használható, például fájlok letöltésére az internetről és e-mailek letöltésére meghatározott időpontokban vagy időpontokban.