Cron on tietokoneohjelma, jonka avulla tietokone voidaan saada tekemään tehtäviä tietyin aikavälein. Sitä käytetään UNIX-tietokoneiden käyttöjärjestelmissä ja UNIXia muistuttavissa käyttöjärjestelmissä, kuten Linuxissa.

Cronia voidaan käyttää useimpien toistuvien tehtävien ajoittamiseen. Sitä käytetään usein tietokoneen tai tietoverkon ylläpitoon tai hallintaan liittyvien tehtävien automatisointiin, vaikka sitä voidaan käyttää moniin muihinkin tehtäviin, kuten tiedostojen lataamiseen Internetistä ja sähköpostin lataamiseen tiettyinä aikoina tai päivinä.

Cron-tietokoneohjelman nimi tulee sanasta cron, joka tulee kreikan kielen sanasta χρόνος (chronos), joka tarkoittaa aikaa.

Cron asetetaan muokkaamalla tiedostoa nimeltä crontab (cron-taulukko). Tässä tiedostossa luetellaan tietokoneen suoritettavat tehtävät ja niiden suoritusajankohdat.

Miten crontab-tiedosto toimii

Crontab-rivillä määritellään ajoitus ja suoritettava komento. Perusmuoto (käyttäjän crontab) on viisi aikakenttää ja komento:

  • minuutti (0–59)
  • tunti (0–23)
  • päivä kuukaudesta (1–31)
  • kuukausi (1–12 tai nimi)
  • viikonpäivä (0–7, jossa 0 ja 7 = sunnuntai, tai nimi)
  • komento (suoritettava komento tai skripti)

Esimerkki: joka päivä klo 03:30 ajettava skripti:

30 3 * * * /usr/local/bin/varmuuskopiointi.sh

Erikoismerkinnät ja -merkkijonot

  • * = kaikki mahdolliset arvot
  • , = erottelija, esim. 1,15,30
  • - = välialue, esim. 1-5
  • / = askelväli, esim. */15 tarkoittaa joka 15. minuutti
  • Erikoisavaimet kuten @reboot, @daily, @hourly, @weekly, @monthly, @yearly (tai @annually) ja @midnight helpottavat yleisiä ajoituksia.

Esimerkkejä:

@daily /usr/local/bin/paivittaja.sh @reboot /usr/local/bin/kaynnista-palvelu.sh

Miten muokata, listata ja poistaa crontab

  • Muokkaus: crontab -e avaa käyttäjän crontabin muokattavaksi (käyttää oletustekstieditoria).
  • Listaus: crontab -l näyttää nykyisen käyttäjän crontabin.
  • Poisto: crontab -r poistaa käyttäjän crontabin.

Järjestelmän crontabit ja hakemistot

Lisäksi järjestelmässä on usein:

  • /etc/crontab — järjestelmätason crontab, jossa on ylimääräinen käyttäjä-kenttä kenttien jälkeen (aikakentät, käyttäjä, komento).
  • /etc/cron.d/ — hakemisto, johon voidaan lisätä palvelukohtaisia crontab-tiedostoja samankaltaisella rakenteella kuin /etc/crontab.
  • /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/ — hakemistot, joiden sisällä olevat skriptit ajetaan vastaavan aikavälin mukaan.

Ympäristö ja käytännön vinkit

  • Cron käyttää usein rajoitettua ympäristöä: PATH voi olla lyhyt. Määritä tarvittaessa PATH crontabin alkuun tai käytä täysiä polkuja komennoissa, esim. /usr/bin/python3 /home/käyttäjä/script.py.
  • Voit asettaa ympäristömuuttujia crontabin yläosaan, esim. MAILTO="[email protected]", jolloin cron lähettää komennon stdout/stderr -sisällön sähköpostina.
  • Jos et halua sähköposteja, ohjaa ulostulo /dev/null: ... >/dev/null 2>&1.
  • Käytä täysiä polkuja tiedostoihin ja ohjelmiin, ja varmista, että skriptillä on suoritusoikeudet (chmod +x).
  • Erityishuomio: crontab:ssa merkki % tulkitaan uusiriviksi ja välittää se komennolle, joten jos komennossa esiintyy %, pitää sen usein pakoittaa tai käsitellä erikseen.

Kirjautuminen ja lokitus

Cronin suoritukset kirjautuvat yleensä järjestelmälokiin (esim. syslog / journalctl). Lokitiedoista voi nähdä onnistuneet ja epäonnistuneet ajot. Esimerkiksi journald-järjestelmässä voi etsiä cron-viestejä komennolla journalctl -u cron tai vastaavalla palvelun nimellä (jakelusta riippuen).

Oikeudet ja turvallisuus

  • Käyttäjä voi muokata omaa crontabiaan, mutta yleensä ei toisen käyttäjän crontabia ilman järjestelmänvalvojan oikeuksia.
  • Järjestelmän crontab- ja /etc/cron.d -tiedostojen muokkaus vaatii root-oikeudet.
  • Älä aja luottamuksellisia komentoja tai avaintietoja skripteissä ilman riittäviä käyttöoikeuksia ja suojausta.

Yleisiä ongelmia ja vianetsintävinkkejä

  • Komento ei suoritettu: tarkista cron-lokit, käytetyt polut ja suoritusoikeudet.
  • Ympäristöerot: testaa komento samassa ympäristössä kuin cron (esim. ajamalla sama komento suoraan sh -c 'komento' tai lisää lokirivejä skriptiin).
  • Ajoitus epäselvä: varmista kenttien järjestys ja käytetyt erikoismerkinnät.

Yhteenveto

Cron on kevyt ja luotettava tapa automatisoida aikataulutettuja tehtäviä UNIX- ja Linux-järjestelmissä. Oikein käytettynä se säästää aikaa ja vähentää manuaalisten tehtävien tarvetta, mutta vaatii huomiota ympäristöön, polkuihin ja lokitukseen, jotta skriptit toimivat odotetusti.