NOMBRE
lockfile - creador de fichero semáforo condicionalSINOPSIS
lockfile -tiempodormido | -r reintentos | -l temporizador_bloqueo | -s suspend | -! | -ml | -mu | nombre_fichero ...DESCRIPCIÓN
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. Using lockfile as the condition of a loop in a shell script can be done easily by using the -! flag to invert the exit status. To prevent infinite loops, failures for any reason other than the lockfile already existing are not inverted to success but rather are still returned as failures. 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 solo 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)).Bloqueo de Buzón
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.EJEMPLOS
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:... 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'.
ENTORNO
- LOGNAME
- usado como indicación para determinar el nombre del
usuario que llama al programa.
ARCHIVOS
- /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/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
VÉASE TAMBIÉN
rm(1), mail(1), sendmail(8), procmail(1)DIAGNÓSTICOS
- 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.
ERRORES
Definitivamente menos de uno.AVISOS
The behavior of the -! flag, while useful, is not necessarily intuitive or consistent. When testing lockfile's return value, shell script writers should consider carefully whether they want to use the -! flag, simply reverse the test, or do a switch on the exact exitcode. In general, the -! flag should only be used when lockfile is the conditional of a loop.MISCELÁNEA
Lockfile resistente a NFS y procesa los 8 bits.NOTAS
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 -r newreintentos 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.SOURCE
Este programa es parte del paquete de procesamiento de correo procmail (v3.24) disponible en http://www.procmail.org/ o ftp.procmail.org en pub/procmail/.MAILINGLIST
Existe un lista de correo para cuestiones relacionadas con cualquier programa del paquete procmail:<[email protected]>
para enviar preguntas/respuestas
<[email protected]>
para solicitudes de suscripción.
Si quisiera estar informado sobre nuevas versiones y parches oficiales envíe una solicitud de suscripción a
(esta es una lista de solo lectura).
AUTORES
Stephen R. van den BergTRADUCCIÓN
La traducción al español de esta página del manual fue creada por Pedro Pablo Fábrega <[email protected]> Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a [email protected]BuGless |