¿SCP bloquea el archivo que está transfiriendo?

8

Tenemos una situación en la que tenemos un registro de aplicación en un servidor AIX. El registro se escribe continuamente desde la aplicación, y tenemos usuarios en Windows que desean ver el archivo. Lo que han estado haciendo es usar WinSCP para transferir el archivo a su escritorio y lo abren usando un editor de texto.

Lo que creo que podría estar sucediendo es que scp está bloqueando el archivo mientras dure la transferencia, y la aplicación deja de poder escribir en el archivo. La razón por la que creo que este es el archivo de registro dejará de crecer en puntos aleatorios durante el día.

¿Es eso lo que tal vez está pasando?

ThaDon
fuente
Creo que una aixetiqueta sería bienvenida.
Cristian Ciupitu

Respuestas:

8

¿Por qué no intentas esto? Comience a explorar un archivo grande, luego ejecútelo lsof /path/to/fileen el servidor AIX y vea lo que dice la columna FD.

Desde la página de manual de lsof:

   FD         is the File Descriptor number of the file or:
                   cwd  current working directory;
                   Lnn  library references (AIX);
                   err  FD information error (see NAME column);
                   jld  jail directory (FreeBSD);
                   ltx  shared library text (code and data);
                   Mxx  hex memory-mapped type number xx.
                   m86  DOS Merge mapped file;
                   mem  memory-mapped file;
                   mmap memory-mapped device;
                   pd   parent directory;
                   rtd  root directory;
                   tr   kernel trace file (OpenBSD);
                   txt  program text (code and data);
                   v86  VP/ix mapped file;
              FD is followed by one of these characters, describing the mode under which the file is open:
                   r for read access;
                   w for write access;
                   u for read and write access;
                   space if mode unknown and no lock
                        character follows;
                   `-' if mode unknown and lock
                        character follows.
              The mode character is followed by one of these lock characters, describing the type of lock applied to the file:
                   N for a Solaris NFS lock of unknown type;
                   r for read lock on part of the file;
                   R for a read lock on the entire file;
                   w for a write lock on part of the file;
                   W for a write lock on the entire file;
                   u for a read and write lock of any length;
                   U for a lock of unknown type;
                   x for an SCO OpenServer Xenix lock on part of the file;
                   X for an SCO OpenServer Xenix lock on the entire file;
                   space if there is no lock.
              See the LOCKS section for more information on the lock information character.
              The FD column contents constitutes a single field for parsing in post-processing scripts.

Si hace esto, al menos en Linux, verá que la columna FD es "3r", lo que significa que tiene algún tipo de bloqueo de lectura, pero no estoy seguro de lo que significa el 3 en frente.

3dinfluence
fuente
FYI, sí, ¡pone ese bloqueo de lectura en el archivo! ¡Gracias!
ThaDon
Oh, en realidad pequeña r indica un bloqueo en solo una parte del archivo, quizás scp no sea el problema entonces ...
ThaDon
1
Eso es correcto, la pequeña r indica que es un bloqueo de bytes. Entonces, en teoría, solo está bloqueando la parte que está enviando actualmente. Pero si lee la página de manual de lsof sobre el bloqueo, también dice que puede no informar el bloqueo con precisión en algunos casos. Es posible que desee configurar un experimento en el que tenga un archivo de texto grande ... comience a explorarlo y luego haga algo como echo "bla, bla, bla" >> archivo de texto. Si eso lo agrega con éxito al final del archivo, diría que lo que informa lsof es correcto.
3dinfluence
1

La mayoría de los programas de Unix no usan bloqueo o cuando lo usan, no es obligatorio, por lo que dudo que el bloqueo impida que su registro crezca. Lo más probable es que la transferencia de SCP esté ralentizando la escritura del registro.

Cristian Ciupitu
fuente