cron är en klassisk demon ( datorprogram på UNIX - klasssystem ) som används för att köra jobb med jämna mellanrum vid en viss tidpunkt. Regelbundna åtgärder beskrivs av instruktioner placerade i crontab- filer och speciella kataloger.
Namnet cron kommer från det grekiska ordet χρόνος (hrόnos) - tid (på engelska - chronos ). Utvecklaren av cron , Ken Thompson , bekräftade detta i ett privat samtal med Brian Kernighan . .
På systemd- baserade system har cron faktiskt ersatts av den inbyggda systemd.timer-mekanismen.
Crontab- filer som skapats för enskilda användare finns i katalogen [1] /usr/spool/cron/crontabs/ eller /var/spool/cron/tabs/ . Det rekommenderas inte att redigera dem manuellt, för detta används kommandot crontab -e. Crontab- filerna som används för att hantera hela systemet finns i katalogen /etc/cron.d/ . Dessutom innehåller katalogerna /etc/cron.daily/ , /etc/cron.weekly/ och /etc/cron.monthly/ program som körs automatiskt (dagligen, veckovis eller månadsvis).
Den huvudsakliga cron-konfigurationsfilen, /etc/crontab, ser ut ungefär så här:
# /etc/crontab: systemomfattande crontab # Till skillnad från alla andra crontab behöver du inte köra kommandot `crontab' # för att installera den nya versionen när du redigerar denna fil # och filer i /etc/cron.d. Dessa filer har också användarnamnsfält, # som ingen av de andra crontabs gör. SHELL = /bin/sh PATH = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # mh dom mon dow användarkommando 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * rottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 rottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * rottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #Varje användare av systemet har sin egen fil inställd av crontab , som beskriver vid vilken tidpunkt och vilka program som ska köras för denna användares räkning. För att redigera crontab -filen används ett speciellt crontab- program med samma namn , vilket gör att du inte kan avbryta cron- processen medan du redigerar.
Visa innehållet i den aktuella schemafilen:
crontab -lTa bort den aktuella schemafilen:
crontab -rFör att redigera din användares crontab -fil, använd kommandot [2]
crontab -eCrontab - tabellen består av 6 kolumner åtskilda av mellanslag eller tabbar . De första fem kolumnerna ställer in exekveringstiden ( minut , timme , dag , månad , veckodag ), de kan innehålla ett nummer, en lista med siffror separerade med kommatecken, ett antal nummer separerade med ett bindestreck, symboler *eller /. I system crontab- filer , efter tidsfälten, anges den användare från vilken kommandot körs. Alla andra tecken i strängen tolkas som ett körbart kommando med dess parametrar. Om kommandot skickar viss text till standardutdata skickas den texten till användarens e-post .
* * * * * kommando att köra - - - - - | | | | | | | | | ----- veckodag (0-7) (söndag = 0 eller 7) | | | ------- månad (1-12) | | ---------- dag i månaden (1-31) | ---------- timme (0-23) ------------- minut (0-59)Ett exempel på crontab -fil :
# kommentarer börjar med '#' som vanligt # använd /bin/sh som ett skal SHELL = /bin/sh # skicka resultat till den här adressen MAILTO = paul@example.org # lägg till användarens hemkatalog till PATH PATH = /bin:/ usr/bin:/home/paul/bin #### Jobs startar här # exekvera varje dag vid 0 timmar 5 minuter, lägg till resultatet i log/daily 5 0 * * * $HOME /bin/daily.job >> $HOME /log/daily 2 > & 1 # kör 1:a i varje månad kl. 14:15 15 14 1 * * $HOME /bin/monthly # varje vardag kl. 22:00 0 22 ** 1 -5 eko "Dags att gå hem" | mail -s "Klockan är redan 22:00" john 23 */2 * * * eko "Kör på 0:23, 2:23, 4:23, etc." 5 4 * * soleko "Kör klockan 4:05 på söndagen" 0 0 1 1 * eko "Gott nytt år!" 15 10 ,13 * * 1 ,4 eko "Detta meddelande visas på måndag och torsdag kl. 10:15 och 13:15" 0 -59 * * * * eko "Kör varje minut" 0 -59/2 * * * * echo " Körs på jämna minuter" 1 -59/2 * * * * eko "Körs på udda minuter" # var 5:e minut */5 * * * * eko "Fem minuter har gått" # varje första söndag i varje månad. -eq 7 är veckodagskoden, dvs 1 -> måndag , 2 -> tisdag etc. 0 1 1 -7 * * [ " $( date '+\%u' ) " -eq 7 ] && echo " Den här etiketten visas varje första söndagen i varje månad kl. 01:00"För användarnas bekvämlighet har många system speciella GUI- program för att hantera cron .
För Debian-baserade distributioner:
Kcron är ett KDE -gränssnitt för redigering av cron- konfigurationsfiler . Verktyget startas av Alt+F2 , i redigeringsfönstret kan du ange med musen:
Unix-kommandon | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|