[linux] Re: voorkomen dat een proces twee keer start.

Jelle Boomstra nllgg op nietsch.dds.nl
Ma Jun 19 22:19:20 CEST 2006


On Monday 19 June 2006 21:18, Daniel C. von Asmuth wrote:
> Aldus schreef Ronald Nooij op Mon, Jun 19, 2006 at 04:40:08PM +0200:
> > Ik heb perl script gemaakt dat maar één keer mag draaien. Het is dus niet
> > toegestaan om een twee instaties op te starten.
> >
> > Nu wilde ik even kijken of jullie het eens zijn met mijn oplossing, of
> > dat ik het beter anders aan kan pakken.
>
> De canonieke manier is ongeveer om te kijken of de file /var/run/grid
> bestaat. Als dat niet het geval is, schrijf je je proces ID in die file en
> gaat aan de slag.
> Bestaat de file wel, dan lees je het proces ID uit die file.
> Draait er ook een proces met dat nummer, dan ga je stilletjes dood.
> Is het proces er niet (progje overleden), dan overschrijf je de file.

Dit is inderdaad redelijk standaard, maar ook nog steeds kwetsbaar voor de 
situatie die Kees beschreef (al is de zee van tijd iets minder groot). de 
lees en schrijf actie zijn niet atomisch, dus indie tussentijd kan een 
volgend process gestart zijn, die ook zijn PID naar de lockfile schrijft. 
Ik zou  dat theoretische probleem in theorie oplossen met een (theoretische) 
lock-daemon die als enige proces een geheugenlokatie uitleest (en evt 
bijhoudt in /var/run/) en zzodra je maar een proces hebt, kan je alles op je 
dooie akkertje sequentieel afwerken.

Maar of dat in de praktijk ook nodig is? ik denk het niet.

-- 
met vriendelijke groeten,
Jelle Boomstra




More information about the Linux mailing list