SCP verrouille-t-il le fichier qu'il transfère?

8

Avoir une situation où nous avons un journal d'application assis sur un serveur AIX. Le journal est continuellement écrit à partir de l'application, et nous avons des utilisateurs sous Windows qui souhaitent afficher le fichier. Ce qu'ils ont fait, c'est d'utiliser WinSCP pour transférer le fichier sur leur bureau et ils l'ouvrent à l'aide d'un éditeur de texte.

Je pense que ce qui pourrait se produire est que scp verrouille le fichier pendant la durée du transfert, et l'application cesse d'être en mesure d'écrire dans le fichier. La raison pour laquelle je pense que c'est le fichier journal cessera de croître à des moments aléatoires pendant la journée.

C'est peut-être ce qui se passe?

ThaDon
la source
Je pense qu'une aixétiquette serait la bienvenue.
Cristian Ciupitu

Réponses:

8

Pourquoi n'essayez-vous pas cela. Commencez à analyser un fichier volumineux, puis exécutez-le lsof /path/to/filesur le serveur AIX et voyez ce que dit la colonne FD.

Depuis la page de manuel 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 vous faites cela, sous Linux au moins, vous verrez que la colonne FD est "3r", ce qui signifie qu'elle a une sorte de verrou de lecture, mais je ne sais pas ce que signifie le 3 devant.

3dinfluence
la source
Pour info, yup il met ce verrou de lecture sur le fichier! Merci!
ThaDon
Oh, en fait, un petit r indique un verrouillage sur une partie seulement du fichier, peut-être que scp n'est pas le problème alors ...
ThaDon
1
C'est exact, le petit r indique qu'il s'agit d'un verrou d'octet. Donc, en théorie, il ne fait que verrouiller la partie qu'il envoie actuellement. Mais si vous lisez la page de manuel lsof sur le verrouillage, il indique également qu'il peut ne pas signaler le verrouillage avec précision dans certains cas. Vous voudrez peut-être configurer une expérience où vous avez un gros fichier texte ... commencez à le scp'er puis faites quelque chose comme echo "bla bla bla" >> fichier texte. Si cela l'ajoute à la fin du fichier, je dirais que ce que lsof rapporte est correct.
3dinfluence
1

La plupart des programmes Unix n'utilisent pas le verrouillage ou lorsqu'ils l'utilisent, ce n'est pas obligatoire, donc je doute que le verrouillage empêche votre journal de croître. Plus probablement, le transfert SCP ralentit l'écriture du journal.

Cristian Ciupitu
la source