inleiding
Daar is 'n daemon in Linux genoem cron wat gebruik word om prosesse met gereelde tussenposes uit te voer.
Die manier waarop dit dit doen, is om sekere dopgehou op u stelsel te keur sodat skrifte kan hardloop. Byvoorbeeld, daar is 'n gids genaamd /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly en /etc/cron.monthly. Daar is ook 'n lêer genaamd / etc / crontab.
By verstek kan jy eenvoudig skrifte in die betrokke vouers plaas om hulle gereeld te laat loop.
Open byvoorbeeld 'n terminaal venster (deur Ctrl, ALT en T te druk) en voer die volgende ls opdrag uit :
ls / etc / cron *
U sal die lys sien van programme of skrifte wat elke uur, daagliks, weekliks en maandeliks uitgevoer word.
Die probleem met hierdie dopgehou is dat hulle effens vaag is. Byvoorbeeld, daagliks beteken dat die script een keer per dag sal loop, maar jy het geen beheer oor die tyd wat die skrip gedurende daardie dag sal loop nie.
Dit is waar die crontab-lêer kom.
Deur die crontab-lêer te wysig, kan u 'n draaiboek of program kry om te hardloop op die presiese datum en tyd wat u wil hê dit moet hardloop. Byvoorbeeld, miskien wil jy elke aand om 18:00 jou lêers rugsteun.
permissions
Die opdrag crontab vereis dat 'n gebruiker toestemmings het om 'n crontab-lêer te wysig. Daar is basies twee lêers wat gebruik word om crontab toestemmings te bestuur:
- /etc/cron.allow
- /etc/cron.deny
As die lêer /etc/cron.allow bestaan, moet die gebruiker wat die crontab-lêer wil wysig, in daardie lêer wees. As die cron.allow lêer nie bestaan nie, maar daar is 'n /etc/cron.deny lêer dan moet die gebruiker nie in daardie lêer bestaan nie.
As beide lêers bestaan, oortree die /etc/cron.allow die /etc/cron.deny lêer.
As daar nie 'n lêer bestaan nie, hang dit af van die stelsel konfigurasie of 'n gebruiker die crontab kan wysig.
Die wortel gebruiker kan altyd die crontab-lêer wysig. U kan ook die su-bevel gebruik om oor te skakel na die hoofgebruiker of die sudo-opdrag om die crontab-opdrag uit te voer.
Die wysiging van die Crontab-lêer
Elke gebruiker wat toestemmings het, kan hul eie crontab-lêer skep. Die cron-opdrag soek basies na die bestaan van verskeie crontab-lêers en loop deur hulle almal.
Om te kontroleer of u 'n crontab-lêer het, voer die volgende opdrag uit:
crontab -l
As u nie 'n crontab-lêer het nie, verskyn die boodskap "no crontab for
Om 'n crontab-lêer te skep of te wysig, voer die volgende opdrag uit:
crontab-e
By verstek as daar nie 'n verstek-redakteur gekies is nie, sal u gevra word om 'n verstek-redakteur te gebruik om te gebruik. Persoonlik hou ek daarvan om nano te gebruik, aangesien dit redelik reguit is om te gebruik en dit loop van die terminale af.
Die lêer wat oopmaak, bevat baie inligting, maar die belangrikste gedeelte is die voorbeeld net voor die einde van die kommentaar afdeling (kommentaar word aangedui deur lyne wat begin met #).
# mh dom mon dow bevel
0 5 * * 1 teer -zcf /var/backups/home.tgz / home /
Daar is 6 stukke inligting om op elke lyn van die crontab-lêer te pas:
- Die minuut van die dag waarop die bevel moet hardloop (m)
- Die uur van die dag waarop die bevel moet hardloop (h)
- Die dag van die maand is die opdrag om te hardloop (dom)
- Die maand die opdrag is om te hardloop (ma)
- Die dag van die week is die opdrag om te hardloop (dow)
- Die opdrag
Vir elke item (behalwe die opdrag) kan u 'n wildcard-karakter spesifiseer. Kyk na die volgende voorbeeld crontab lyn:
30 18 * * * teer -zcf /var/backups/home.tgz / home /
Wat die bogenoemde bevel sê, is om 30 minute, 18 uur en enige dag, maand en dag van die week, voer 'n bevel om te zip en tik die tuisgids na die / var / backups gids.
Om 'n opdrag te kry om 30 minute oor elke uur te hardloop, kan ek die volgende opdrag uitvoer:
30 * * * * opdrag
Om 'n bevel te kry om elke minuut om 18:00 te hardloop, kan ek die volgende opdrag uitvoer:
* 18 * * * opdrag
U moet dus versigtig wees om u krontab opdragte op te stel.
Byvoorbeeld:
* * * 1 * opdrag
Bogenoemde bevel sal elke minuut van elke uur van elke dag van elke week in Januarie hardloop. Ek twyfel dit is wat jy wil hê.
Om op 1 Januarie 'n bevel uit te voer, sou jy op die volgende bevel na die crontab-lêer gaan:
0 5 1 1 * opdrag
Hoe om 'n Crontab-lêer te verwyder
Meeste van die tyd sal jy nie die crontab-lêer wil verwyder nie, maar jy wil dalk 'n paar rye van die crontab-lêer verwyder.
As jy egter die gebruiker se crontab-lêer wil verwyder, voer die volgende opdrag uit:
crontab -r
'N Veiliger manier om dit te doen is om die volgende opdrag uit te voer:
crontab -i
Dit vra die vraag "is jy seker?" voordat die crontab-lêer verwyder word.