[pyar] File lock

Andrés Gattinoni andresgattinoni en gmail.com
Lun Jul 5 22:01:21 ART 2010


2010/7/5 Juan Carlos Ojeda <juancarlospaco en gmail.com>:
> Ese File Lock da error si usas NFS.

En este caso es solo para Linux, así que no tengo ese problema.

> Yo uso un directorio,
> la creacion de directorios en LiGNUx es Atomico.
>
>
> #!/bin/bash
> # -*- coding: utf-8 -*-
> # Licence = GPL v3
> lockdir=/tmp/mylock.lock
> if mkdir "$lockdir"  # mkdir is atomic on LiGNUx
>  then  # Launch the app, create the dir
>      echo " "
>      echo >&2 " Successfully acquired lock: $lockdir..."
>      echo " "
>      /usr/bin/env python /path/to/my/app.py  ### > /dev/null 2>&1
>      echo " "
>      rm -rfv /tmp/mylock.lock
>  else  # Dont start the app, the dir exist
>      echo " "
>      echo >&2 -e '\033[40m\033[1;31m WARNING: Cannot acquire Lock, giving up
> on $lockdir... \033[0m'
>      echo " "
>      echo " The MyApp is already running?"
>      echo " "
>      xkbbell
>      sleep 3
>      exit 0
>  fi

Esto igual, entiendo, es para usar un lock para ver si el script está
corriendo. Lo que yo necesito es que dos programas puedan leer y
escribir en un mismo lugar sin generar conflictos.

Otra opción interesante (para otros casos), cuando uno no quiere que
un programa se ejecute más de una vez es utilizar un socket unix. Eso
te permite ver chequear no solamente si hay otro proceso corriendo,
sino si está vivo. Por ejemplo, en el caso de un daemon que tiene que
correr en una sola instancia, si se te tilda y queda el proceso
corriendo el archivo de lock seguiría existiendo, en un ps -ef
seguiría estando el proceso, pero no probablemente no te contestaría
en el socket.



More information about the pyar mailing list