Sada je: 13 svi 2024, 22:44.
Rasprave u vezi Linux aplikacija.

Moderator/ica: Moderatori/ce

...da li netko ima iskustva sa konfiguracijom anacron-a (anacrontab)?
Postovi: 805
Postovi: 805
Pridružen/a: 21 vel 2012, 23:18
Podijelio/la zahvalu: 83 puta
Primio/la zahvalu: 56 puta
Spol: M
trzalica je napisao/la:...da li netko ima iskustva sa konfiguracijom anacron-a (anacrontab)?


Imam ja. Što te muči? Nisam neki ekspert, ali uspješno sam ga koristila.
Avatar
Site Admin
Postovi: 6502
Site Admin
Postovi: 6502
Pridružen/a: 06 lip 2009, 23:16
Lokacija: Online
Podijelio/la zahvalu: 621 puta
Primio/la zahvalu: 631 puta
OS: Kubuntu & Fedora
Znači želim da se na tjednoj bazi pokrene skripta koja briše jedan file. Međutim, vjerojatno sam negdje putem nešto zeznuo jer koliko vidim, ništa se ne događa. Inače sa anacron-om nemam baš nikakvog iskustva a na netu nisam uspio pronaći ništa korisnoga...
/etc/cron.d/0hourly
Kod: Označi sve
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

/etc/anacrontab
Kod: Označi sve
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1   5   cron.daily      nice run-parts /etc/cron.daily
7   4   cron.weekly      nice run-parts /etc/cron.weekly
@monthly 45   cron.monthly      nice run-parts /etc/cron.monthly

I još sam pod /etc/cron.weekly/ stavio jednostavnu skriptu sa komandom za brisanje jedne fajle bez nastvka .sh jer sam pročitao da se to mora izbaciti da bi anacron odradio svoje.
Kod: Označi sve
#!/bin/sh

rm [NAZIV FAJLE]


EDIT: Pokušao sam unijeti direktno u anacrontab zadatak koji treba obaviti ali se ništa ne događa. To sam napravio na način da sam u anacrontab napisao sljedeće:
Kod: Označi sve
7    4    [naziv]    bash [lokacija skripte]

i onda sam anacron pokušao pokrenuti sa:
Kod: Označi sve
anacron -s -f -n

i ništa. Čak sam u anacrontab direktno napisao i naredbu koja je u skripti i opet ništa. Iritantno! :hmm
Zadnja izmjena: trzalica; 20 stu 2016, 18:48; ukupno mijenjano 1 put/a.
Postovi: 805
Postovi: 805
Pridružen/a: 21 vel 2012, 23:18
Podijelio/la zahvalu: 83 puta
Primio/la zahvalu: 56 puta
Spol: M
Ne moraš stavljati skriptu u /etc/cron* foldere, ona se može nalaziti bilo gdje.
Problem je što ti anacron ne funkcionira isto kao cron:

It's not a resident daemon and therefore can't replace crond or atd; it starts up at boot time (or when manually invoked), waits for the appropriate intervals before checking some conditions, and then once everything has been checked or run, it quits.


Za razliku od njega, cron ti je stalno pokrenut u pozadini i "pazi" kad se treba nešto izvršiti. Međutim, njegov problem je to što ako ti je komp ugašen u vrijeme kad bi se neki task trebao izvršiti, cron neće to "zapamtiti" i napraviti kad se ponovno podigne sustav. U osnovi, preskočit će taj jedan task.

Za ovaj tvoj slučaj možeš probati kombinirati @weekly i @reboot opcije u samom crontabu. Pritom ne bi trebao uređivati crontab u text editoru, već koristiti naredbu
Kod: Označi sve
crontab -e
. Ili, možeš samo definirati taj @weekly u crontabu i onda symlinkati skriptu u /etc/cron.weekly - onda bi ju anacron trebao pokrenuti ako ju cron "propusti".

Sa crontab -l možeš vidjeti kako izgleda trenutni crontab za tvog korisnika.
Sa crontab -e možeš dodati tu svoju skriptu tako da bude:

30 8 * * 7 /putanja/do/naredbe

To znači da će se naredba pokrenuti svake nedjelje (umjesto 7 možeš napisati i Sun, ili neki drugi broj/dan) u 8:30.

Možeš napisati i

@weekly /putanja/do/naredbe

ali to će se onda pokrenuti u nedjelju u ponoć.

Još neke stvari na koje treba paziti u vezi same skripte:

When cron job is run from the users crontab it is executed as that user. It does not however source any files in the users home directory like their .cshrc or .bashrc or any other file. If you need cron to source (read) any file that your script will need you should do it from the script cron is calling.

If the users account has a crontab but no usable shell in /etc/passwd then the cronjob will not run. You will have to give the account a shell for the crontab to run.

If your cronjobs are not running check if the cron daemon is running. Then remember to check /etc/cron.allow and /etc/cron.deny files. If they exist then the user you want to be able to run jobs must be in /etc/cron.allow. You also might want to check if the /etc/security/access.conf file exists. You might need to add your user in there.

Crontab is not parsed for environmental substitutions. You can not use things like $PATH, $HOME, or ~/sbin. You can set things like MAILTO= or PATH= and other environment variables the /bin/sh shell uses.


To je vjerojatno jednostavna skripta za brisanje, ali možda joj nešto nedostaje od ovih stvari navedenih gore, pa ju zato cron ne može pokrenuti. I naravno, skripta bi trebala imati pravilno postavljene permissione i biti executable.

Ne znam pomaže li ti išta od ovoga, možda će netko drugi bolje objasniti. Teško mi je napamet govoriti kad ne znam kako izgleda ta skripta ni crontab od tvog korisnika.
Avatar
Site Admin
Postovi: 6502
Site Admin
Postovi: 6502
Pridružen/a: 06 lip 2009, 23:16
Lokacija: Online
Podijelio/la zahvalu: 621 puta
Primio/la zahvalu: 631 puta
OS: Kubuntu & Fedora
Aha, sad vidim edit. Ne možeš u anacrontabu pisati "bash", mislim da mora biti eksplicitna putanja do svake naredbe.

7 4 job_identifier /bin/sh /putanja/do/skripte
Avatar
Site Admin
Postovi: 6502
Site Admin
Postovi: 6502
Pridružen/a: 06 lip 2009, 23:16
Lokacija: Online
Podijelio/la zahvalu: 621 puta
Primio/la zahvalu: 631 puta
OS: Kubuntu & Fedora
Problem je što ti anacron ne funkcionira isto kao cron:

It's not a resident daemon and therefore can't replace crond or atd; it starts up at boot time (or when manually invoked), waits for the appropriate intervals before checking some conditions, and then once everything has been checked or run, it quits.



Za razliku od njega, cron ti je stalno pokrenut u pozadini i "pazi" kad se treba nešto izvršiti. Međutim, njegov problem je to što ako ti je komp ugašen u vrijeme kad bi se neki task trebao izvršiti, cron neće to "zapamtiti" i napraviti kad se ponovno podigne sustav. U osnovi, preskočit će taj jedan task.

Znam-znam, zato i želim anacron a ne cron za ovaj zadatak. Cron sam do sada uspješno konfigurirao po serverima samo sa anacronom nisam imao iskustva.

Za ovaj tvoj slučaj možeš probati kombinirati @weekly i @reboot opcije u samom crontabu. Pritom ne bi trebao uređivati crontab u text editoru, već koristiti naredbu

Kod: Označi sve
    crontab -e


. Ili, možeš samo definirati taj @weekly u crontabu i onda symlinkati skriptu u /etc/cron.weekly - onda bi ju anacron trebao pokrenuti ako ju cron "propusti".

Ne možeš u anacrontabu pisati "bash", mislim da mora biti eksplicitna putanja do svake naredbe.

7 4 job_identifier /bin/sh /putanja/do/skripte

U anacrontab sam dodao:
Kod: Označi sve
7    4    [naziv]    /bin/sh [putanja do skripte]

a onda sam provjerio sa:
Kod: Označi sve
sudo anacron -s -f -n

provjerio da li radi pogledom u /var/spool/anacron/ i naravno, željena datoteka je izbrisana.

Ako hoćeš, možeš ovih nekoliko postova prebaciti u novu temu (možda će pomoći još nekome ubuduće).
Postovi: 805
Postovi: 805
Pridružen/a: 21 vel 2012, 23:18
Podijelio/la zahvalu: 83 puta
Primio/la zahvalu: 56 puta
Spol: M
OK, dakle sad radi? Super :bravo

Evo, odvojila sam postove u zasebnu temu.
Avatar
Site Admin
Postovi: 6502
Site Admin
Postovi: 6502
Pridružen/a: 06 lip 2009, 23:16
Lokacija: Online
Podijelio/la zahvalu: 621 puta
Primio/la zahvalu: 631 puta
OS: Kubuntu & Fedora
Abzeenth je napisao/la:OK, dakle sad radi? Super :bravo

Evo, odvojila sam postove u zasebnu temu.

Da, sada radi tj. testirao sam sa:
Kod: Označi sve
sudo anacron -s -f -n

i zadani zadatak je izvršen.
Mislim da je bilo ključno što sam promijenio onaj dio za bash skriptu u anacrontab fajli koji si mi predložila da promijenim jer poslije te izmjene (/bin/sh), profunkcioniralo je.
Ako slučajno nešto ne bude štimalo u međuvremenu, opet ću početi njurgati bez brige :hihi :)
Postovi: 805
Postovi: 805
Pridružen/a: 21 vel 2012, 23:18
Podijelio/la zahvalu: 83 puta
Primio/la zahvalu: 56 puta
Spol: M

Na mreži
Trenutno korisnika/ca: / i 3 gostiju.