Šta je novo?

CRON ili ANACRON pitanjce

  • Začetnik teme Začetnik teme Filo
  • Datum pokretanja Datum pokretanja

Filo

Čuven
Učlanjen(a)
28.12.2001
Poruke
3,703
Poena
710
Kako da nateram cron ili anacron da startuju nesto a da niko nije ulogovan?
Koliko sam citao one man strane, za root-a bi postojao /var/spool/cron/root fajl u kome bi pisalo sta treba da se startuje i kad
npr.ako hocu svakih 1/2 sata

0,30 * * * * /neki/folder/nesto

E sad-kako da se to pokrece a da niko nije ulogovan?
 
Pazi, sve zavisi sta hoces da radis.

Skripte mogu generalno da pokrenu programe kao da ih je pokrenuo odredjeni user.
Evo generalni primer je kada imas svoj mail server i hoces da na njega svuces mailove sa raznih "spoljnih" mail servera koristeci fetchmail. Sam fetchmail je napravljen tako da u home diru svakog korisnika postoji hidden rc fajl u kojem stoji adresa udaljenih mail servera, user/pass za njih i ostali parametri. Medjutim, kada user pokrene fetchmail, bice mu skinut mail samo za njega, pa bio on i root. Da dodatno zabiberimo situaciju, neka je veza sa internetom dialout preko modema/isdn-a bilo on-demand ili manuelno (mozda cron tu ne radi posao, nego modifikacija skripti ipup-ppp, recimo) i da po uspostavljanju veze skine mailove svih korisnika. Tada je najbolje resenje mozda kreirati posebni korisnicki account koji bi se koristio samo za svlacenje maila (za sve korisnike), a u svim ostalim stvarima blokirati mu prava pristupa. Tada bi trebalo fetchmail izvrsiti kao da ga je pokrenuo doticni user, a to je taman ono sta tebi ovde treba:

su username -c "/usr/sbin/komanda parametri"

Obrati takodje paznju da je nekada bolje da root bude vlasnik takvog procesa, a nekada obicni korisnik sa vrlo suzenim pravima.
 
hoces da kazes da ja treba da stavim
0,30 * * * * su root -c /neki/folder/nesto
da bi se to "nesto" pokretalo?
pitanje broj 2: gde ja to da upisem
Ono sto meni treba je pokretanje jednog perl skripta svakih pola sata. Masina ce da bude upaljena 24h dnevno ali mi je malo glupo da je ostavim sa root nalogom ulogovanim, pa me zanima kako to da ostvarim najlakse
 
Ne, ne, nisi me razumeo, malo sam i ja ukomplikovao sa objasnjenjem.

"su username -c /neki/folder/nesto" je nacin da startujes neku skriptu ili program kao tacno odredjeni 'username' bez logina, recimo prilikom bootovanja iz /etc/rc.local skripte, na primer. Kada se zavrsi izvrsavanje doticne skripte, zavrsi se i sesija, te taj "username" proces vise ni ne postoji niti ne ostaje ulogovan niko. Dakle, kao sto sam (nedovoljno jasno) bio objasnio, ovo u slucaju da ti je potrebno da se skripta ili program izvrsi ne prema cronu, nego prema odredjenim "dogadjanjima" - npr. uspostavljanje veze sa internetom ili prekid iste i slicno.

Sto se samog crona tice, on je daemon (iliti servis u windows zargonu). Ne trebas uopste biti lokalno na serveru ulogovan kao bilo koji user da bi on svoje stvari odradjivao - vazno je samo da se cron daemon podigne redovno svakim butom (to je default konfiguracija kod 99.99% distribucija).

Da bi se neki task izvrsavao preko crona redovno imas vise nacina:
1. u /etc/ diru imas poddirove cron.hourly, cron.daily, cron.weekly, itd. te mozes samo svoju skriptu da spustis u jedan od tih dirova u zavisnosti da li ti skripta treba na svaki sat, svaki dan, nedelju, itd. Nikakve dodatne konfiguracije ti ne trebaju.

2. ukoliko ti ono pod 1. nije dovoljno precizno, koristis /etc/crontab konfiguracioni fajl:
- dodas na kraju (za svakih pola sata u tvom slucaju):

*/30 * * * * root /neki/folder/program parametri

I to je to. Root ne treba da se uloguje uopste da bi se to izvrsavalo svakih 30 minuta. Tada se startuje proces (ciji je vlasnik root), izvrsi se i nakon toga proces nestaje iz liste aktivnih procesa.


U principu, ukoliko taj racunar koristi vise ljudi, onda se moze za svakog korisnika posebno specifikovati sta da se redovno startuje putem crontab komande (koji kreira za svakog korisnika crontab config fajl u /var/spool/cron/), medjutim, ne verujem da ti to treba.

Dakle, nikakva ulogovanja, nista - samo editujes /etc/crontab kao pod 2. i dovoljno je da startujes server i to je to. Kad server otvori login screen (za **lokalnu** konzolu), znas sasvim sigurno da je pokrenuo (ili bar pokusao da pokrene) sve daemone koje je trebao (lista daemona je u /etc/rc.d/init.d/diru).
 
OK
razumeo sam te i prvi put ali je meni trebalo ovo iz tvog objasnjenja pd 2.
Hvala
Odo' da probam!
 
Nazad
Vrh Dno