Beírva | VS |
---|---|
Operációs rendszer | Unix típus |
típus |
UNIX segédprogram ( d ) Daemon számítógépes feladatütemezés |
A cron egy olyan program, amely lehetővé teszi a Unix rendszerek felhasználóinak, hogy automatikusan futtassanak szkripteket, parancsokat vagy szoftvereket egy előre meghatározott dátumon és időpontban, vagy előre meghatározott ciklusban.
A koncepció a program eredetileg a Unix rendszerek a Berkeley és az AT & T , és később ésszerűsíteni a Paul Vixie . Az eredeti elképzelés az volt, hogy legyen egy olyan szolgáltatás, amely percenként felébred, elemzi az adott könyvtárban található fájlkészletet, és onnan határozza meg, hogy az ilyen shell parancsokat végre kell-e hajtani ebben az időszakban.
Cron a csonkolása cron lap maga a csonkolása c h ron o lap le, ami azt jelenti: „tervezési táblázat” (görögül Chronos (χρόνος) azt jelenti, idő).
Ez egy nagyon hasznos szolgáltatás a rendszeres rendszergazdai feladatokhoz , de bármi máshoz nagyon jól használható. Például a cron szombat és vasárnap kivételével minden nap hét órakor lejátszhat egy ogg fájlt , hogy zenére ébredjen.
A cron egy démon , amely számítógépes szakzsargonban a háttérben futó programra utal. A cron ( crond ) szolgáltatás tehát megvárja, amíg a konfigurációs fájlban megadott idő ( crontab néven szerepel ), majd elvégzi a megfelelő műveletet, és visszaalszik a következő eseményig.
A cron szolgáltatást a root fiók indítja el annak érdekében, hogy alkalmazkodni tudjon az egyes felhasználók identitásához. Egyes Unixokon, ha megölik (a kill paranccsal), akkor a rendszer automatikusan újraindítja.
crontaba program neve Unix (és Linux ) alatt, amely lehetővé teszi a cron program konfigurációs tábláinak szerkesztését . Ezek a táblázatok meghatározzák a végrehajtandó feladatokat és azok végrehajtási ütemezését, esetleg periodicitással. Kiterjesztésként gyakran hívunk cronnak (vagy angolul cron jobnak ) bármilyen, időszakos ütemezés szerint elindított feladatot.
MűveletA parancs crontabmódosítja a felhasználóval kapcsolatos fájlt. A biztonság érdekében crontabellenőrizze a szintaxist a fájl frissítése előtt. Ez a fájl a fa szerkezetében található /var , például:
Tehát rootegy Debian gépen lévő felhasználó számára a cron táblát a rendszer tárolja/var/spool/cron/crontabs/root
A legtöbb Linux rendszerben (SuSE, Debian, Red Hat ) szintén van központosított cron tábla /etc/crontab.
Vannak olyan feljegyzések is /etc/cron.d, /etc/cron.hourly, /etc/cron.daily, /etc/cron.weeklyés /etc/cron.monthlyamelyek tartalmazzák a cron-táblázatok a különböző részein a rendszer (log forgatás, frissítési fájlok ...).
Azoknál a munkaállomásoknál, amelyek nem feltétlenül működnek a nap 24 órájában, az anacron alkalmazás lehetővé teszi olyan parancsok indítását, amelyeknek a számítógép kikapcsolt állapotában kellett volna lenniük.
használat A táblázat elolvasásaA következő parancssor megjeleníti a cron táblázat tartalmát az aktuális felhasználó számára:
$ crontab -lEz a parancs nem jeleníti meg a központosított táblázatot ( /etc/crontab).
A táblázat módosításaA következő paranccsal módosíthatja az aktuális felhasználó cron tábláját:
$ crontab -eEz a parancs az alapértelmezett szerkesztő elindítását eredményezi (általában vi). Ezután a szerkesztő megjeleníti az aktuális táblázatot. Első indításkor crontaba táblázat üres, esetleg súgó megjegyzésekből (a karakterrel kezdődő sorokból #).
Az alapértelmezett szerkesztő a környezeti változókkal $EDITORvagy $VISUAL. Például a szerkesztő konfigurálásához vim :
$ export EDITOR=vimEz a parancs nem teszi lehetővé a központosított tábla ( /etc/crontab) módosítását sem.
Asztalcserecrontabfelülírhatja az aktuális táblázatot is egy új táblával. Ez az új tábla paraméterként megadható egy fájlban:
$ crontab fichier-contenant-la-nouvelle-table.txt A táblázat törléseA következő parancssor megerősítés nélkül törli a cron tábla tartalmát az aktuális felhasználó számára:
$ crontab -r Táblázat szintaxisa ÉrtékelésA táblázat minden bejegyzése (minden sor) megfelel az elvégzendő feladatnak , és tiszteletben kell tartania ezt a jelölést:
mm hh jj MMM JJJ tâcheMinden számérték ( mm , óó , jj , MMM , JJJ ) esetében a lehetséges jelölések a következők:
Ha ugyanazon a soron adja meg a „hónap napja számát” és a „hét napját”, akkor a cron akkor hajtja végre a feladatot, amikor az egyik mező megegyezik. Például a következő sor azt jelzi, hogy a feladatot péntekenként és minden hónap 13. napján éjfélig kell végrehajtani:
0 0 13 * 5 tâche Műveletek naplójaA feladat egy végrehajtandó parancs . Ha ez a feladat a szokásos kimenetére vagy szabványos hibájára ír , akkor a crond démon elküldi őket e-mailben a megfelelő felhasználónak (akit a hatodik paraméter jelez).
Annak megakadályozása érdekében, hogy ezeket az információkat e-mailben továbbítsák, lehetőség van fájlokban történő átirányításra. Például :
mm hh jj MMM JJJ tâche > fichier-1 2> fichier-2Vagy összegyűjti a standard kimeneteket és hibákat ugyanabban a journal.txt nevű fájlban :
mm hh jj MMM JJJ tâche >> /mon/répertoire/journal.txt 2>&1 ParancsikonokParancsikonok | Leírás | Egyenértékű |
---|---|---|
@reboot | Indítás közben | Nem |
@yearly | Minden évben | 0 0 1 1 * |
@annually | Minden évben | 0 0 1 1 * |
@monthly | Minden hónap | 0 0 1 * * |
@weekly | Minden héten | 0 0 * * 0 |
@daily | Minden nap | 0 0 * * * |
@midnight | Minden éjjel | 0 0 * * * |
@hourly | Minden órában | 0 * * * * |
Mindegyik példa szabad lemezterületet ( df parancs ) spórol meg a fájlban /tmp/df.logkülönböző időpontokban. Az előzmények megőrzése érdekében ezek a példák az átirányítást használják, >>amely lehetővé teszi az új adatok hozzáadását a fájl végén (ha ez már létezik, különben létrejön).
Minden nap 11: 30-kor:
30 23 * * * df >> /tmp/df.logÓránként, 5 perctől kezdve:
5 * * * * df >> /tmp/df.logMinden hónap első napján a 23 h 30 :
30 23 1 * * df >> /tmp/df.logMinden hétfőn 22 óra 28 :
28 22 * * 1 df >> /tmp/df.logMinden pénteken és mind a 13 bármely hónapban a 11 h 22 :
22 11 13 * 5 df >> /tmp/df.logMinden pénteken 13 bármely hónapban a 11 h 22 :
22 11 13 * * [ `date '+\%w'` -eq 5 ] && df >> /tmp/df.log2 és 5 minden hónap 10 h 12 :
12 10 2-5 * * df >> /tmp/df.logMinden páratlan napon a hónap 23 óra 59 :
59 23 */2 * * df >> /tmp/df.logMinden munkanapon 10 órakor:
0 22 * * 1-5 df >> /tmp/df.log5 percenként:
*/5 * * * * df >> /tmp/df.logA hónap minden utolsó napján (a% előtti visszavonás kötelező a crontab szerkesztésekor, ellentétben a parancs manuális végrehajtásával):
0 0 28-31 * * [ `/bin/date +\%d` -gt `/bin/date +\%d -d "1 day"` ] && df >> /tmp/df.logA fenti példák átirányítást használnak >>egy napló létrehozására több futtatás során.
Különböző fájlokba történő íráshoz lehetőség van a parancs használatára date, mint például a következő példában:
30 23 * * * df > /tmp/df_`date +\%d_\%m_\%Y_\%H_\%M`.log(a "karaktert (súlyos akcentus, U + 0060) a franciaországi AZERTYAlt Gr billentyűzet [ ] + [7] billentyűinek kombinációjával állítjuk elő )
Természetesen egy másik megoldás a fájl szkriptbe írása appelle-df.sh :
#!/bin/sh JJ_MM_ANNEE_HH_MM=`date +\%d_\%m_\%Y_\%H_\%M` df > /tmp/df_${JJ_MM_ANNEE_HH_MM}.logÉs cserélje le az előző cron táblázatot a következőkre:
30 23 * * * appelle-df.sh Hasznos parancsokEzek a parancsok nem minden Linux és Unix disztribúciónál működnek .
Jelzi az összes felhasználó utoljára végrehajtott feladatának idejét:
ls -lut /etc/init.d/cronInformációk kivonása a cron tábláról a rendszernaplóból:
grep -w cron /var/log/syslogIndítsa újra a cron démonot:
/etc/init.d/cron force-reloadAmikor a téli / nyári idő megváltozik , a hivatalos idő 2 óráról 3 órára változik (a Franciaországban hatályos szabályok szerint). A 14:00 és 00:00 2 59 között tervezett feladatokat tehát nem hajtják végre. Ezzel szemben a nyári / téli időváltozás során ezeket a feladatokat kétszer (hajnali 3 órakor, még mindig hajnali 2 órakor) hajtják végre.
Ennek a kellemetlenségnek az elkerülése érdekében a legtöbb Unix rendszer úgy van konfigurálva, hogy használja az UTC ( Coordinated Universal Time ) időt , amelyre nem vonatkoznak ezek a nyári időszámítási szabályok.
Az mcron nem az említett program megfelelő megvalósítása, hanem a Séma nyelvén kódolt jelentős fejlődés . Nem csak a hagyományos módszert támogatja , hanem a Scheme-ben írt konfigurációs fájlokat is, amelyek bizonyos rugalmasságot biztosítanak az elvégzendő feladatok meghatározásában (például figyelembe veheti a rendszer terhelését ). Az újdonság abban rejlik, hogy képes elolvasni az összes szükséges utasítást, feldolgozni azokat, amelyeket végre kell hajtani, és a megadott időn belül aludni kell. Amikor felébred, a parancsok végrehajtásra kerülnek, és kiszámítják a következő kezelés idejét. Ennek az új programnak a specifikációi a Lisp család egyik nyelvén vannak megírva , amely lehetővé teszi több utasítás egyidejű feldolgozását és nagyobb rugalmasságot, mint a Vixie fájlformátuma . Arról nem is beszélve, hogy a felhasználók crontabs fájljaiban végrehajtott változtatásokat közvetlenül a crontab program jelenti neki , míg a cronnak percenként ellenőriznie kell az / etc / crontab alkalmazást, bár ennek a fájlnak a használata erősen nem ajánlott és letiltható. Ez szabad szoftver által forgalmazott GNU Project feltételei alapján a GPL licenc .
Egyes részei ennek a cikknek, vagy egy korábbi változata a cikk cikkén alapulnak, ütemezési feladatokat honlapon Hogyan működik . Az eredeti cikk a következő szerzői jogi megjegyzést tartalmazza: „© Copyright 2004 Jean-François Pillou - Hosted by Web-solutions.fr. A CommentCaMarche.net ezen dokumentuma a GNU FDL licenc alá tartozik . Másolhatja és módosíthatja ennek az oldalnak a másolatait, amennyiben ez a megjegyzés világosan megjelenik. ". Azóta ez a webhely Hogyan működik? megváltoztatta az engedélyét. És végül az eredeti cikk már nem érhető el.