Hoe om die Linux Crontab-lêer te wysig om werkopdragte te beplan

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:

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 " anders sal u crontab-lêer vertoon word. Hierdie funksionaliteit verskil van stelsel tot stelsel, soms vertoon dit niks en ander tye word dit vertoon. Moenie hierdie lêer wysig nie ").

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:

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.