[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Duda Script



El 24/08/07, Luis Rodrigo Gallardo Cruz <rodrigo@nul-unu.com> escribió:
> On Fri, Aug 24, 2007 at 10:33:27AM -0300, Maxi wrote:
> > Hola gente,
> >
> > Tengo un script[1] muy simple, que me trae un problema y no veo como
> > mejorarlo....
> > El script debe copiar archivos de un path a otro.
> > El script esta en el cron, y cada 20 minutos se ejecuta.
> > En el path original constanemente se escriben archivos, y el problema
> > es que hay momentos que se estan escribiendo archivos y el script
> > entra en funcionamiento, lo que ocurre es que el archivo que estaba
> > abierto se copia mal.
> >
> > ¿En el script, como puedo consultar y no copiar si el archivo origen
> > esta abierto o esta siendo utilizado?
>
> La respuesta corta es 'no puedes'.
>
> La respuesta larga es que podrías, en principio, usar algo como
> lsof. Pero en realidad no te sirve, por que estas creando una
> condición de carrera. Puede pasar que hagas la prueba, veas que el
> archivo no está abierto, empieces a copiarlo, y *entonces* lo abran.
> A menos que el programa que escribe a los archivos nunca los vuelva a
> abrir cuando termina.
>

Bueno, los archivos puede que lo abran, pero solo como lectura, no se
si puedo estar copiando un archivo y otro proceso lo abra y la copia
se cancele, tendria que hacer la prueba.

> La solución general es usar un bloqueo. Lo que debería pasar es que
> todos los programas que pueden llegar a usar los archivos deben usar
> algo que les indique a los demás "estoy usando éste, no se metan".
> Investiga por ejemplo el uso de dotlockfile, que viene en el paquete
> liblockfile1
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> iD8DBQFGzvDrAZmDGK3JvCgRAs8SAJ9GQhtdzSBlgWlpNbUzU7KLW80/LwCeL0WK
> zPPNqakrb+2z/XAu3+XGub8=
> =ENYP
> -----END PGP SIGNATURE-----
>
>



Reply to: