Preskoči na sadržaj

Cron zadatak se ne izvršava: kako da ga pokrenete

Srednje 20 min Ažurirano:

Kratak odgovor

Cron zadatak se najčešće ne izvršava zbog pogrešne sintakse u crontab-u, nedostatka dozvole za izvršavanje, pogrešne putanje do skripte ili zato što cron servis nije pokrenut. Proverite logove, testirajte skriptu ručno i koristite apsolutne putanje.

Kako se problem prepoznaje

  • Zadatak se ne pokreće u zakazano vreme
  • Nema očekivanog izlaza ili fajla
  • Cron log je prazan ili prikazuje greške
  • Skripta radi ručno, ali ne i iz cron-a
  • Email obaveštenja o greškama ne stižu

Najčešći uzroci

Cron servis nije pokrenut

Ako cron daemon nije aktivan, nijedan zadatak se neće izvršiti. Proverite status servisa i pokrenite ga ako je potrebno.

Pogrešna sintaksa u crontab-u

Greška u poljima za vreme ili nedostatak završnog reda može sprečiti izvršavanje. Proverite format i koristite `crontab -l` da vidite aktivne zadatke.

Nedostatak dozvole za izvršavanje

Skripta mora imati dozvolu za izvršavanje (`chmod +x`). Takođe, proverite da li je vlasnik korisnik koji pokreće cron.

Pogrešna putanja ili okruženje

Cron koristi ograničeno okruženje, pa relativne putanje i promenljive mogu biti problem. Koristite apsolutne putanje i eksplicitno definišite promenljive.

Problemi sa dozvolama ili vlasništvom

Fajlovi kojima skripta pristupa moraju biti čitljivi korisniku cron-a. Proverite dozvole i vlasništvo nad fajlovima i direktorijumima.

Rešenje korak po korak

  1. 1

    Proverite da li je cron servis pokrenut

    Pokrenite systemctl status cron (ili systemctl status crond na nekim distribucijama). Ako servis nije aktivan, pokrenite ga sa sudo systemctl start cron i omogućite automatsko pokretanje sa sudo systemctl enable cron.

  2. 2

    Pregledajte aktivne cron zadatke

    Izvršite crontab -l da vidite zadatke za trenutnog korisnika. Za sistemske zadatke pogledajte fajl /etc/crontab i direktorijum /etc/cron.d/. Uverite se da nema sintaksnih grešaka.

  3. 3

    Testirajte skriptu ručno

    Pokrenite skriptu iz terminala sa istim korisnikom koji pokreće cron. Ako ne radi ručno, problem je u skripti, a ne u cron-u. Ispravite greške i ponovo testirajte.

  4. 4

    Koristite apsolutne putanje

    U crontab-u navedite punu putanju do skripte i interpretatora, npr. /usr/bin/python3 /home/korisnik/skripta.py. Isto važi i za fajlove kojima skripta pristupa.

  5. 5

    Postavite promenljive okruženja

    Na početak crontab-a dodajte PATH=/usr/bin:/bin i druge potrebne promenljive. Možete ih definisati i unutar skripte. Izbegavajte oslanjanje na promenljive iz interaktivne sesije.

  6. 6

    Proverite dozvole i vlasništvo

    Uverite se da skripta ima dozvolu za izvršavanje (chmod +x skripta.sh) i da korisnik koji pokreće cron ima pravo da je čita i izvršava. Proverite i dozvole nad direktorijumima i fajlovima koje skripta koristi.

  7. 7

    Pregledajte cron logove

    Na sistemima sa systemd-journald, koristite journalctl -u cron ili journalctl -u crond. Na drugim sistemima pogledajte /var/log/syslog ili /var/log/cron. Tražite greške vezane za vaš zadatak.

  8. 8

    Privremeno preusmerite izlaz u fajl

    Dodajte >> /tmp/cron.log 2>&1 na kraj linije u crontab-u da biste uhvatili standardni izlaz i greške. Zatim pregledajte fajl nakon što se zadatak izvrši.

  9. 9

    Proverite da li je vreme tačno

    Uverite se da je sistemsko vreme ispravno (date). Ako je vremenska zona pogrešna, cron će se pokretati u pogrešno vreme. Podesite vremensku zonu i sinhronizaciju vremena.

Ako ništa ne pomogne

Ako ste proverili sve navedeno, a zadatak se i dalje ne izvršava, pokušajte da pokrenete cron u debug režimu. Za Vixie cron, nakratko zaustavite servis i pokrenite ga ručno sa sudo cron -f -x proc (ili odgovarajućom opcijom za vaš cron); posle testa ponovo pokrenite servis. To će prikazati detaljne informacije o obradi zadataka. Takođe, proverite da li postoje ograničenja putem fajlova /etc/cron.allow i /etc/cron.deny koja mogu sprečiti korisnika da koristi cron. Na kraju, razmotrite alternativu kao što je systemd timer, koji nudi bolje logovanje i upravljanje.

Kako da sprečite da se ponovi

  • Redovno proveravajte cron logove
  • Koristite apsolutne putanje i eksplicitne promenljive
  • Testirajte skripte pre dodavanja u cron
  • Ograničite dozvole i pratite vlasništvo fajlova

Kada je bolje pozvati stručnjaka

Ako ne možete da pronađete uzrok ili nemate pristup logovima i sistemskim fajlovima, obratite se IT podršci. Oni mogu brže da izoluju problem i spreče zastoje u radu.

Održavanje IT infrastrukture · Serveri, mreže, backup, bezbednost i helpdesk

Česta pitanja

Zašto se moj cron zadatak ne izvršava iako je sintaksa ispravna?

Najčešći razlog je nedostatak dozvole za izvršavanje skripte ili pogrešna putanja do interpretatora. Proverite da li skripta radi kada je pokrenete ručno i da li su sve putanje apsolutne.

Kako da vidim greške koje cron prijavljuje?

Možete privremeno preusmeriti izlaz u fajl dodavanjem `>> /tmp/cron.log 2>&1` u crontab. Takođe, pregledajte sistemske logove kao što su `/var/log/syslog` ili `journalctl -u cron`.

Da li je cron isto što i anacron?

Nije. Cron je namenjen za precizno zakazivanje, ali neće pokrenuti propuštene zadatke ako je računar bio isključen. Anacron je dizajniran da izvrši propuštene zadatke, ali ne garantuje tačno vreme.

Podeli
Niste našli rešenje?AI IT asistent je dostupan 24/7. Opišite problem ili pošaljite screenshot greške i dobićete uputstvo za vaš slučaj.Pitajte AI IT asistenta