On Mon, 2001-12-24 at 01:56, Paul POP wrote:
> Am mai spus ce este,un slak 8.Cred ca imi dau seama de ce sa dus
> drakului passwd, am un proces care se executa la 10 secunde cu crond si
> care scrie useri in passwd, din cite imi dau eu seama ruleza mai multe
> instante ale aceluiasi proces deodata si s-ar fi putut sa se suprapuna
> doua procese si sa crakanat passwd. Banuiesc ca asta sa intimplat.Sa
> refac passwd de mana exclus ca am mai mult de o mie de useri,da am backup.
Ai noroc. ;-)
> Cum fac sa il limitez pe crond sa execute o singura instant a
> procesului? nu de alta da s-ar putea sa mai imi faca chestii de astea,
> din cite vad eu nu face kill la procesul anterior.
Poti limita la mai multe nivele, depinde cum iti convine tie.
O metoda care are avantajul ca poate fi aplicata in extrem de multe
situatii (fie din cron, fie din altceva, si merge cam indiferent ce
proces rulezi) este sa lansezi procesul nu direct, ci printr-un script
care face locking.
Uite script-ul meu generic, pe care il folosesc ca sa nu se lanseze
fetchmail inca o data inainte sa se termine instanta precedenta:
#!/bin/sh
lock="${HOME}/.fetchmail.lock"
if [ ! -f ${lock} ]; then
touch ${lock}
fetchmail -s -S weiqi.home.local 1>/dev/null 2>/dev/null
rm -f ${lock}
fi
Intelegi? Definesc intii cine este fisierul de lock. Apoi ma uit daca
fisierul exista. Daca da, nu execut nimic. Daca nu, il creez, apoi
execut fetchmail, apoi sterg lock-ul.
Folosesc metoda pentru a executa fetchmail o data pe minut, din cron, ca
sa-mi aduc mesajele de la Yahoo. Dar genul asta de wrapper merge pentru
absolut orice: pentru softuri care fac mirror (nu vreau sa porneasca
mirror-ul inainte sa se termine incercarea precedenta), etc. Scriptul
poate fi chemat din cron sau din ce vrei tu.
Singura conditie este ca programul apelat sa nu se detaseze de consola
inainte sa termine executia (insa doar daemonii se detaseaza, asa ca in
general poti sta linistit).
Precautie: daca se ia curentul atunci cind lock-urile sint puse, atunci
n-o sa-ti mai mearga wrapper-ul. Solutia este sa pui undeva in rc.local
(sau cam asa ceva) o linie care sa rada toate lock-urile atunci cind
sistemul booteaza.
Eventual poti pune un else ca sa-ti trimita un mail daca incearca sa se
execute atunci cind lock-ul e pus. Da, s-ar putea sa fie o idee buna,
pentru ca in felul asta esti avertizat daca se intimpla anormalitati...
:o)
In fine, exista si alte posibilitati...
--
Florin Andrei
"We believe that it should be the market which decides which browser
to use, rather than Microsoft." - Michael Tiemann, Red Hat CTO
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to
unsubscribe from this list.