table of contents
other languages
LOCKFILE(1) | General Commands Manual | LOCKFILE(1) |
lockfile - creador de fichero semáforo condicional
lockfile -tiempodormido | -r reintentos |
-l temporizador_bloqueo | -s suspend | -! |
-ml | -mu | nombre_fichero ...
lockfile Se puede usar para crear uno o más ficheros
semáforo. Si lockfile no puede crear todos los ficheros
especificados (en el orden especificado), espera tiempodormido segundos
(por defecto 8) y reintenta el último fichero que no pudo crear. Puede
especificar el número de reintentos a llevar a cabo hasta que
devuelva un fallo. Si el número de reintentos es -1 (por defecto,
i.e. -r-1) lockfile intentará indefinidamente.
Si el número de reintentos expira antes de que se hayan creado todos
los ficheros, lockfile devuelve un fallo y elimina todos los ficheros creados
hasta ese punto.
El valor devuelto por lockfile se puede invertir fácilmente especificando
-! como un argumento (viene bien en los guiones de shell).
Todas las banderas se pueden especificar en cualquier posición de la
línea de mandato, se procesan cuando se encuentran. La línea de
mandato es simplemente analizada de izquierda a derecha.
Todos los ficheros creados por lockfile serán de sólo lectura, y por
tanto tendrán que eliminarse con rm -f.
Si especifica un temporizador_bloqueo entonces el fichero de bloqueo se
eliminará a la fuerza cuando hayan pasado temporizador_bloqueo segundos
desde que el fichero fue creado/modificado por última vez (lo más
probable por algún otro programa que murió inesperadamente hace
cierto tiempo y no pudo borrar los ficheros de bloqueo restantes). Lockfile es
inmune a las desviaciones del reloj. Tras haber eliminado un fichero de
bloqueo a la fuerza se tiene en cuenta una suspensión de suspend
segundos (por defecto 16), para prevenir la eliminación inmediata de
cualquier fichero de bloqueo creado recientemente por otro programa (compare
SUSPEND de procmail(1)).
Si los permisos del directorio de spool de correo del sistema lo permite o si
lockfile tiene setgid, podrá bloquear y desbloquear su buzón del
sistema usando las opciones -ml y -mu respectivamente.
Supongamos que quieres estar seguro que el acceso al fichero
"importante" es en serie, es decir, no más de un programa o
guión de shell podría acceder a él. Por motivos de simplicidad
supongamos que es un guión de shell. En este caso podría resolverlo
de la siguiente forma:
LOGNAME usado como indicación para determinar el nombre del usuario
que llama al programa.
/etc/passwd para verificar y/o corregir el nombre de usuario que llama al
programa (y para encontrar el directorio HOME, si fuera necesario)
/var/spool/mail/$LOGNAME.lock fichero de bloqueo para el buzón del
sistema, las variables de entorno presentes aquí no se tomarán del
entorno, sino que se determinarán mirando en /etc/passwd
rm(1), mail(1), binmail(1), sendmail(8),
procmail(1)
filename too long, ... Use un nombre de fichero más corto.
Forced unlock denied on "x" No hay permisos de escritura en el
directorio donde reside el fichero de bloqueo "x", o más de un
fichero de bloqueo está intentando forzar un bloqueo exactamente al mismo
tiempo.
Forcing lock on "x" El fichero de bloqueo "x" va a ser
eliminado a la fuerza por el sobrepaso del temporizador (compare
LOCKTIMEOUT en procmail(1)).
Out of memory, ... Al sistema no le queda espacio swap.
Signal received, ... Lockfile eliminará todo lo que haya creado hasta ahora
y termina.
Sorry, ... Se ha alcanzado el límite de reintentos.
Truncating "x" and retrying lock "x" no parece ser un
nombre_fichero válido.
Try praying, ... Subdirectorio no encontrado o privilegios insuficientes.
Definitivamente menos de uno.
Lockfile resistente a NFS y procesa los 8 bits.
Al llamar un fichero de bloqueo con las opciones -h or -? hará que muestre
una página de ayuda para la línea de mandatos. Llamándolo con
la opción -v hará que muestre su información sobre la
versión.
Multiples banderas -! alternan el estado de salida.
Como las banderas pueden aparecer en cualquier posición de la línea de
mandatos, cualquier nombre_fichero que empiece por '-' tiene que ser precedido
por './'.
El número de reintentos no se reiniciará cuando se cree
cualquier fichero (i.e. simplemente se usan). Sin embargo, se puede reiniciar
especificando -rnewreintentos tras cada fichero en la línea de
mandatos.
Aunque se pueden usar ficheros con cualquier nombre como ficheros de bloqueo, es
una práctica común usar la extensión `.lock' para bloquear
carpetas de correo (se añade al nombre de carpeta). En el caso de que uno
no quiera preocuparse por los nombres de ficheros demasiado largos y no tener
que adaptarse a cualquier otra convención de ficheros de blqueo, una
excelente forma de generar nombres de fcheros de bloqueo correspondientes a
algún fichero existente es tomar el prefijo `lock.' y añadir el
número de i-nodo de fichero que se tiene que bloquear. Este programa es
parte del paquete de procesamiento de correo procmail (v3.13.1)
disponible en http://www.procmail.org/ o ftp.procmail.org en
pub/procmail/. Existe un lista de correo para cuestiones relacionadas
con cualquier programa del paquete procmail:
Si quisiera estar informado sobre nuevas versiones y parches oficiales envíe una solicitud de suscripción a
Stephen R. van den Berg
... lockfile importante.lock ... acceso_"importante"_al_contenido_de_su_corazón ... rm -f importante.lock ...Ahora, si todos los guiones que acceden a "importante" siguen esta directriz, tendrá la seguridad de que, como mucho, se ejecutará un único guión entre las órdenes `lockfile' y `rm'.
<procmail-users@procmail.org> para enviar preguntas/respuestas<procmail-users-request@procmail.org>
para solicitudes de suscripción.
Si quisiera estar informado sobre nuevas versiones y parches oficiales envíe una solicitud de suscripción a
procmail-announce-request@procmail.org(esta es una lista de sólo lectura).
<srb@cuci.nl>
1999/01/20 | BuGless |