Fedezze fel a crontabot, annak parancsait és a Crontabhoz kapcsolódó különféle műveleteket.
Megtanuljuk a feladatok ütemezését a cron segédprogrammal, és végül néhány online eszközről is szót ejtünk, amelyek segítenek a cron parancsok formázásában és tesztelésében.
Tartalomjegyzék
Eredet
A Crontab a „cron table” rövidítése. A cron szó a görög Chronos szóból származik, ami időt jelent. A Crontab egy rendszerdémon folyamat, amely automatikusan végrehajt bizonyos feladatokat és feladatokat az ütemezett időpontban.
Használati esetek
A Crontab hasznos különféle műveletek végrehajtására, mint például az automatikus biztonsági mentés kezelése, a naplófájlok forgatása, a fájlok szinkronizálása a távoli gépek között és az ideiglenes mappák törlése stb. A Crontab bármilyen munkára használható, de különösen akkor válik hasznossá, amikor elkezdünk foglalkozni rendszeradminisztrációs munkatípus.
A cron használatával az adminisztrátor beütemezheti a feladatot egy adott időpontra és napra.
Lássuk tehát, hogyan tudjuk ezt beállítani.
Crontab szintaxis
A parancsok listájának végrehajtásához a cron segédprogram beolvassa a konfigurációs fájlokat. A crontab konfigurációs táblákban lévő sorok értelmezéséhez a Crontab szintaxist követi. A Crontab hat mezővel rendelkezik, és az első öt (1-5) mező határozza meg a végrehajtás dátumát és időpontját. Az utolsó mező, azaz a 6. mező lehet egy felhasználónév és/vagy a végrehajtandó feladat /job/command/script.
* * * * * USER_NAME COMMAND/SCRIPT-TO-VÉGREHAJTÁS
│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ A hét napja (0–6) (0 a vasárnap, vagy használjon neveket)
│ │ │ |____________ hónap (1–12),* minden hónap
│ │ |__________________ A hónap napja (1-31),* minden nap
│ |________________ Óra (0–23),* minden órát jelent
|_______________________ Perc (0–59), * minden percet jelent
Megjegyzések:
- Csillag
- a mező összes lehetséges értékének egyeztetésére szolgál. Például az óra mezőben használt csillag minden órával, vagy a hónap mezőben lévő csillag minden hónapnak felel meg.
a felhasználónév nem kötelező (csak akkor érhető el, ha a rendszer crontab fájlja)
Példák:
Nézzük meg néhány példával a fenti szintaxist
0 5 * * * /scripts/job.sh
1. Ütemezze be a cron végrehajtását naponta 5:00-ra
0 6,18 * * * /scripts/job.sh
2. Ütemezze be a cron végrehajtását naponta kétszer reggel 6 és 18 órakor
* * * * * /scripts/job.sh
3. Ütemezzen be egy cron végrehajtását percenként
0 19 * * mon /scripts/job.sh
4. Ütemezze be a cron végrehajtását minden hétfőn 19 órára.
*/10 * * * * /scripts/job.sh
5. Ütemezze be a cron végrehajtását 15 percenként.
* * * feb,jun,oct * /script/job.sh
6. Ütemezze be a cron végrehajtását a kiválasztott hónapokra
25 7 4 3 * /home/script/backup.sh
7. Futtassa a /home/script/backup.sh shell szkriptet március 4-én 7:25-kor.
8. Ütemezze be a cron 30 másodpercenkénti végrehajtását
- Mivel a Crontabban a másodpercek felett nem rendelkezünk, de az alábbi kétlépéses folyamattal elérhetjük.
* * * * * /home/scripts/script.sh
- Először ütemezzünk be egy percenként futó feladatot.
* * * * * sleep 30; /home/scripts/script.sh
Most használjuk az alvás parancsot a végrehajtás szüneteltetésére 30 másodpercre.
A fenti feladat 30 másodpercre leállítja a végrehajtást, és újra folytatódik.
Cron konfigurációs fájlok típusa
Kétféle Cron konfigurációs fájl létezik:
A UNIX/Linux rendszer Crontab
Ehhez root jogosultság szükséges, mivel általában rendszerszolgáltatásokhoz és kritikus feladatokhoz használják. A hatodik mező (a fenti szintaxisleírásban) annak a felhasználónak a neve, amelyen a parancs fut. Lehetővé teszi a rendszer crontab számára, hogy parancsokat futtasson, mint bármely felhasználó.
A felhasználó Crontab
A felhasználó saját cron-feladatait is telepítheti a crontab paranccsal. Itt is a hatodik mező (a fenti szintaxisleírásban) a futtatandó parancs, és minden parancs a crontabot létrehozó felhasználóként fut. Minden felhasználónak lehet saját crontab fájlja, és bár ezek a /var/spool/cron/crontabs fájlok, nem közvetlenül szerkeszthetők. A crontab parancsot kell használnunk a saját cron munkáink szerkesztéséhez vagy beállításához.
Hogyan működik? A cron szolgáltatás (démon) a háttérben fut, és folyamatosan (percenként) ellenőrzi az /etc/crontab fájlt és az /etc/cron.*/ könyvtárakat. Ellenőrzi a /var/spool/cron/ könyvtárat is. A parancsokat végrehajtja cron
ha a perc, óra és hónap mezők megegyeznek az aktuális idővel, és a kétnapos mezők (a hónap napja vagy a hét napja) legalább egyike megegyezik az aktuális nappal.
Alapvető parancsok
A meglévő Cron-állások listája
crontab -l
Kilistázhatjuk az összes Cron-feladatot a crontab konfigurációs fájl megnyitása nélkül az alábbi paranccsal
[[email protected] ~]# crontab -l no crontab for etoppc.com [[email protected] ~]#
Ha nincs meglévő feladat, akkor a kimenetet a következőként adja vissza
[[email protected] ~]# crontab -l # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command 0 */1 * * * /home/account/scripts/updateAccountStatuses.sh 0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh [[email protected] ~]#
Ha a felhasználó már hozzáadott néhány feladatot, akkor a következőképpen jelenik meg.
A Cron tábla felhasználófüggő, ami azt jelenti, hogy be kell jelentkeznie egy adott felhasználóval a cron tábla listájának megtekintéséhez.
Cron listázása adott felhasználó számára
Egy másik felhasználó ütemezett munkáinak listázásához használja a -u (Felhasználó) és -l (Lista) paramétereket.
crontab -u másik_felhasználónév -l
Példa: crontab -u etoppc.com -l
Crontab bejegyzések hozzáadása/módosítása
A crontab bejegyzés szerkesztéséhez használhatjuk az -e opciót az alábbiak szerint.
crontab -e
A fenti parancs megnyitja a vi szerkesztőket, ahol megadhatja a feladat részleteit, és mentheti a fájlt. Mentés után a crontab -l segítségével ellenőrizheti, hogy a cron be van-e állítva vagy sem.
Adott felhasználóhoz tartozó Crontab bejegyzések hozzáadása/módosítása
crontab -u another_username -e
Az alábbi paranccsal szerkeszthetjük a crontab-ot egy másik felhasználó számára
Példa: crontab -u etoppc.com -e
Távolítsa el a Crontab bejegyzést
Használja a -r paramétert a Crontabnál a teljes ütemezett feladatok eltávolításához a crontab megerősítése nélkül
crontab -r
crontab -i -r
[[email protected] ~]# crontab -i -r crontab: really delete etoppc.com's crontab?
Ha megerősítést szeretne kapni az ütemezett feladatok törlése előtt, használja a -i kapcsolót az -r billentyűvel, amely megerősítést kér a felhasználótól, mielőtt törölné a felhasználó crontabját.
Crontab speciális karakterlánc
A fent tárgyalt szintaxison kívül nyolc, a Crontab által biztosított speciális karakterláncot is használhatunk. Nem csak az időnket takarítja meg, hanem javítja az olvashatóságot is.
Speciális húr
Leírás
@reboot
Futtassa egyszer, indítás után.
@évi
Fuss évente egyszer, azaz 0 0 1 1 *
@évente
Ugyanaz, mint @yearly
@havi
Fuss havonta egyszer, azaz 0 0 1 * *
@heti
Fuss hetente egyszer, azaz 0 0 * * 0
@napi
Fuss naponta egyszer, azaz 0 0 * * *
@éjfél
Ugyanaz, mint a @daily
@óránkénti
Fuss óránként egyszer, azaz 0 * * * *
Crontab speciális karakterlánc-példák
1. Crontab a feladatok éves ütemezéséhez
@yearly /scripts/greeting.sh
Egy feletti újévi üdvözletet tudunk végrehajtani, minden év első percében lefut.
2. A Crontab a feladatok havonta ütemezéséhez.
@monthly /scripts/cleanup.sh
A fentieket minden hónap elején elvégezhetjük bizonyos takarítási tevékenységek elvégzésére.
Hasonlóképpen használhatunk más Crontab speciális karakterláncokat heti, napi és óránkénti célokra.
Cron könyvtár
- A rendszergazda használhat egy rendszerszintű cron ütemezést, amely az előre meghatározott cron könyvtárban található, az alábbiak szerint
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
/etc/cron.weekly
Crontab valós idejű példák
Nézzünk meg néhány valós idejű példát, amelyeket rendszerint a rendszergazdák vagy informatikusok használnak.
Törölje az üres fájlokat és könyvtárat
45 0 * * * etoppc.com find /tmp -type f -empty -delete
A cron kifejezés felett megtalálja az üres fájlokat és könyvtárat a /tmp könyvtárból, és törli őket. Ez a munka napi 12.45-kor indul. A feladat végrehajtásához meg kell említenünk a felhasználónevet. A fenti példában a etoppc.com felhasználó cron feladatot hajt végre.
Több feladat végrehajtása egyetlen cron használatával
* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh
Több feladat/munka pontosvesszővel (;) elválasztható, és egyetlen cron kifejezéshez rendelhető.
Cron formázási és tesztelési eszközök
Eddig a feladat ütemezéséhez szükséges parancsokat és a crontab szintaxisát tárgyaltuk. De mi van akkor, ha Ön nem rendszergazda, és nem az a feladata, hogy rendszeresen beállítsa a Cront, előfordulhat, hogy nem lehet megjegyezni a szintaxist, és megnyílik a hibalehetőség. Ne aggódjon, van megoldásunk erre a problémára.
Számos Cron formázási eszköz elérhető az interneten.
# 1. Cron Job Generator Cron Job Generator
egy nagyon felhasználóbarát grafikus felület, ahol megadhatja a crontab létrehozásához szükséges szkript percét, napjait és elérési útját.
Vegyünk egy valós idejű példát, ahol hétfőtől péntekig 5 percenként kell végrehajtanom a /home/processMonitor.sh fájlt.
Tehát megkaptam az alábbi Cron szintaxist, amelyet végrehajtva be tudok helyezni a crontabba
crontab –e
0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh
# 2. Easycron Easycron
egy hasznos webalapú cron feladatütemező. A meghívandó URL megadásával létrehozhatunk cron feladatot, beállíthatjuk, hogy mikor kell végrehajtani. Megadhatunk cron kifejezést is, vagy kézzel is hozzáadhatunk egy leíró formából. Fontos, hogy opcionálisan használhatjuk az alapvető HTTP-hitelesítést egy kis szintű biztonság érdekében.
Nem csak ez, hanem az Easycron más célok elérésére is használható, mint például a szabványos Cron kifejezés, a Cron munkavégrehajtási naplók, az e-mail értesítések, a külön hibanaplók stb.
# 3. Crontab Generator Crontab generátor
egy másik praktikus eszköz a crontab generálásához, és ezzel az eszközzel azt is hozzáadhatja, ha el szeretné menteni a cron kimenetét a fájlba, vagy el szeretné küldeni e-mailre.
# 4. Crontab Guru Crontab Guru
egy egyszerű online cron ütemezési kifejezésszerkesztő. Ezen túlmenően, ez egy hasznos eszköz a cronjob figyelemmel kísérésére. Mindössze annyit kell tennünk, hogy másoljunk egy parancsot, és fűzzük hozzá a crontab definíció végéhez. Ha a cron feladat meghiúsul, vagy el sem indul, figyelmeztető e-mailt fog kapni.
Az alábbi példában a Job 04:05-kor fog végrehajtani, minden nap, minden hónapban és minden héten.
# 5. CRON teszter CRON teszter
lehetővé teszi a cron idő/dátum definíciók tesztelését. Előfordulhat olyan helyzet, amikor a meglévő cron szintaxist kell dekódolnunk a hibaelhárításhoz, vagy egyszerűen csak tesztet szeretnénk végezni.
Ehhez használhatjuk ezt az eszközt. Mindössze annyit kell tennünk, hogy másoljuk és illesszük be a cron kifejezést a cron definíciós mezőbe, majd válasszuk ki az iterációk számát, és kattintsunk a Teszt gombra, hogy megtekintsük a különböző dátumokat, amelyeken futni fog.
Ellenőrizzük az egyik cron kifejezést 4 3 */2 * *amelynek kétnaponta 03:04-kor kell futnia. Ellenőrizzük cron teszterrel.
.