Weekend Prosjekt: Ta en titt på Cron Replacement Whenjobs

cron planleggeren har vært et nyttig verktøy for Linux og Unix admins i flere tiår, men det er bare kan
være på tide å pensjonere cron til fordel for en mer moderne design. En erstatning, fortsatt i kraftig utvikling, er whenjobs. Denne helgen, la oss ta en titt på whenjobs og se hva fremtiden for planlegging på Linux kan se ut.

Standard cron versjon for de fleste Linux-distribusjoner i disse dager er avledet fra Paul Vixie cron. På Ubuntu, vil du finne den Vixie /ISC versjon av cron. På Fedora og Red Hat slipper du finner cronie, som ble delte fra Vixie cron i 2007.

Du kan også finne varianter som fcron, men ingen av variantene som er rundt i dag har virkelig avansert cron veldig mye . Du kan ikke fortelle cron " når dette skjer, kan du kjøre denne jobben. &Quot; For eksempel, hvis du ønsker å bli varslet når du begynner å bli lite diskplass, eller hvis lasten på en maskin er over en viss terskel. Du kan skrive skript som sjekker disse tingene, og
kjøre dem ofte. Men det ville være bedre om du bare kunne stole på planleggeren til å gjøre det for deg.

Det er også mindre enn vennlig formatering til cron. Når jeg har jobbet i hosting, fant jeg rikelig
av cron jobber som enten kjører altfor ofte fordi eieren mis-formatert tids felt, eller som ikke kjører så ofte som forventet av samme grunn . Sikkerhetskopiere jobber som burde vært kjører daglig kjørte en gang i måneden. Oops.

Får whenjobs

Red Hat Richard WM Jones har jobbet på whenjobs som ". En kraftig men enkel cron erstatnings " Den siste kilden tarball er 0,5, så vi regner med at det begynner å bli brukbart, men har fortsatt noen bugs. (Og det gjør det, mer om det i et øyeblikk.)

En liten advarsel, er du sannsynligvis kommer til å trenge mye av avhengig å bygge whenjobs på egen hånd. Det ser ikke ut til å være pakket oppstrøms av en hvilken som helst av de distroer, inkludert Fedora. Det krever også noen nyere pakker som du ikke kommer til å finne i Fedora 16. Jeg endte opp med å prøve det ut på Fedora 17, og installere massevis av Objective Caml pakker.

For å få whenjobs, kan du enten hente den nyeste tarball eller gå for den nyeste koden ut av git repository. Du kan få den nyeste ved hjelp git clone git: //git.annexia.org/git/whenjobs.git men jeg vil anbefale å gå med tarball

Jones anbefaler bare å bygge whenjobs med rpmbuild -ta whenjobs. -. * tar.gz. (Skift ut * med den versjonen du har, selvfølgelig.) Hvis du har alle avhengig nødvendig, bør du ende opp med en RPM som du kan installere etter at det er gjort kompilering.

Bruke whenjobs
< p> For å bruke whenjobs, må du starte daemon. Vær oppmerksom på at du ikke begynner dette som root, ønsker du å kjøre det som vanlig bruker.

Ifølge dokumentasjonen, ønsker du å starte daemon med whenjobs --daemon, men Jones forteller meg at dette ikke 't implementert ennå. I stedet vil du ønsker å kjøre /usr /sbin /whenjobsd å starte daemon. Du kan bekrefte at den kjører ved hjelp pgrep whenjobsd. (Etter hvert vil du kunne bruke whenjobs --daemon-status.)

Hvis du vil begynne å legge jobber i køen, må du bruke whenjobs -e. Dette bør slippe deg inn i din jobb manus og la deg begynne å legge arbeidsplasser. Formatet er markant annerledes enn cron-tallet, så la oss se på hva vi har fått fra prøven whenjobs scripts


 hvert 10. minutt:. ≪ < # Få gratis blokker i /home free = `stat -f -c% b /home` # Sett variabelen 'free_space' whenjobs --type int --set free_space $ free > > når endringer free_space & & free_space < 100000: < < mail -s " ALERT: kun $ free_space blokker igjen på /home " $ LOGNAME < /dev /null > > 


Jobs starter med en periodisk uttalelse eller et når uttalelse. Hvis du ønsker en jobb for å kjøre på utvalgte intervaller uansett hva, bruker hver periode
uttalelse. Perioden kan være noe sånt som hver dag eller hver 2. uke eller hver to årtusener. Jeg tror Jones blir en wee bit
optimistisk med at en, men på pluss-siden – hvis whenjobs er fortsatt i bruk 1000 år fra nå, og det går ikke jobben din, Jones sannsynligvis ikke trenger å forholde seg til feilrapport ...

Ellers kan du bruke når statement å evaluere et uttrykk, og deretter utføre en jobb hvis påstanden er sann. Se mannen siden på nett for alle mulige når uttalelser som støttes.

Som du ser, kan du også angi variabler for whenjobs. Det aksepterer flere typer variabler, for eksempel ints, strykere, booleans, og så videre. Du kan se og sette variabler ved hjelp whenjobs --variables eller whenjobs --set variabel

Skriptet for jobben er plassert mellom parentes. (≪ < > >). Her kan du bruke vanlige skallskript. Skriptene evalueres med $ SHELL variabel eller /bin /sh hvis det ikke er satt. Antagelig kan du bruke tcsh eller zsh i stedet hvis du foretrekker dem.

Hvis du ønsker å se jobbene manuset uten å måtte pop det åpent for redigering, bruke whenjobs -l. Du kan bruke whenjobs --jobs å se jobbene som faktisk kjører. Hvis du trenger å avbryte en, bruker whenjobs --cancel serie
hvor serienummeret er den ene gitt av whenjobs --jobs kommando.

En cron erstatning?

Jeg tror ikke whenjobs er helt klar til å bli rullet ut som en cron erstatning ennå, men det er definitivt verdt å ta en titt på om du noen gang har følt frustrert med cron begrensninger. Det vil trolig være en stund før whenjobs begynner å gjøre sin vei inn i de store distroer, men hvis du føler deg litt eventyrlysten, hvorfor ikke begynne å jobbe med det denne helgen? Anmeldelser