A cron ismétlődő szerverfeladatokat indít el megadott időpontban: például mentést, riportkészítést vagy alkalmazáskarbantartást. A sikeres indítás azonban nem jelenti automatikusan azt, hogy a feladat hiba nélkül befejeződött.
Megmutatjuk a cron kifejezés felépítését, a biztonságos parancsok alapjait, a naplózást és az átfedő futások elleni védelmet.
Mit ütemez a cron?
Egy crontab sor öt időmezőből és egy parancsból áll. A feladat annak a felhasználónak a jogosultságaival fut, akinek a crontabjába bekerült.
| Mező | Tartomány |
|---|---|
| Perc | 0–59 |
| Óra | 0–23 |
| Hónap napja | 1–31 |
| Hónap | 1–12 |
| Hét napja | 0–7, ahol a 0 és 7 vasárnap |
Kép megnyitása teljes méretben Példa naplózott feladatra
Ez a példa 15 percenként futtat egy alkalmazásparancsot. Abszolút elérési utakat használ, és ugyanabba a naplóba irányítja a normál kimenetet és a hibákat.
*/15 * * * * /usr/local/bin/php /var/www/app/bin/console app:task >> /var/log/app-task.log 2>&1Így lesz megbízható az automatizálás
- Használj abszolút elérési utakat; a cron környezete és PATH-ja eltérhet az interaktív termináltól.
- Állítsd be a munkakönyvtárat, a szükséges környezeti változókat és a megfelelő felhasználót.
- Naplózd a kimenetet és figyeld a kilépési kódot; a csend nem bizonyít sikeres futást.
- Hosszú feladatnál akadályozd meg az átfedő példányokat például flock használatával.
- A titkokat ne írd közvetlenül a crontabba vagy világ számára olvasható naplóba.
- Ellenőrizd a szerver időzónáját és a nyári időszámítás hatását.
Átfedő futások megakadályozása
A -n miatt az új példány nem várakozik, ha az előző még fut. Döntsd el, hogy ez megfelel-e az üzleti folyamatnak, és az átugrott futásokról is legyen jelzésed.
*/5 * * * * /usr/bin/flock -n /run/lock/app-task.lock \
/usr/local/bin/php /var/www/app/bin/console app:task >> /var/log/app-task.log 2>&1Ha kézzel működik, cronból nem
- Nézd meg, melyik felhasználó crontabjában szerepel a feladat.
- Ellenőrizd a parancsok és fájlok teljes elérési útját, a jogosultságokat és a munkakönyvtárat.
- Irányítsd át ideiglenesen a teljes kimenetet naplóba, és vizsgáld meg a rendszer cronnaplóját.
- Hasonlítsd össze a szükséges környezeti változókat és az időzónát.
- Tedd idempotenssé a feladatot, hogy ismételt futás se okozzon duplikációt vagy adatvesztést.



