El 24/08/07, Luis Rodrigo Gallardo Cruz <[EMAIL PROTECTED]> 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----- > >