Sperrt SCP die übertragene Datei?

8

In einer Situation befindet sich ein Anwendungsprotokoll auf einem AIX-Server. Das Protokoll wird kontinuierlich von der Anwendung aus geschrieben, und wir haben Benutzer unter Windows, die die Datei anzeigen möchten. Sie haben WinSCP verwendet, um die Datei auf ihren Desktop zu übertragen, und sie öffnen sie mit einem Texteditor.

Was meiner Meinung nach passieren könnte, ist, dass scp die Datei für die Dauer der Übertragung sperrt und die Anwendung nicht mehr in die Datei schreiben kann. Der Grund, warum ich glaube, dass dies die Protokolldatei ist, wird im Laufe des Tages an zufälligen Punkten nicht mehr wachsen.

Ist es das, was vielleicht los ist?

ThaDon
quelle
Ich denke, dass ein aixTag willkommen wäre.
Cristian Ciupitu

Antworten:

8

Warum versuchst du das nicht? Starten Sie das Scp'ing einer großen Datei und führen Sie sie dann lsof /path/to/fileauf dem AIX-Server aus. Sehen Sie, was in der FD-Spalte steht.

Aus der lsof-Manpage:

   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.

Wenn Sie dies tun, werden Sie zumindest unter Linux feststellen, dass die FD-Spalte "3r" ist, was bedeutet, dass sie eine Art Lesesperre hat, aber ich bin nicht sicher, was die 3 davor bedeutet.

3dinfluence
quelle
Zu Ihrer Information, ja, es setzt diese Lesesperre auf die Datei! Vielen Dank!
ThaDon
Oh, eigentlich zeigt ein kleines r eine Sperre nur für einen Teil der Datei an, vielleicht ist scp dann nicht das Problem ...
ThaDon
1
Das ist richtig, das kleine r zeigt an, dass es sich um eine Bytesperre handelt. Theoretisch wird also nur der Teil gesperrt, den es gerade sendet. Wenn Sie jedoch die lsof-Manpage zum Sperren lesen, heißt es auch, dass die Sperre in einigen Fällen möglicherweise nicht korrekt gemeldet wird. Vielleicht möchten Sie ein Experiment einrichten, bei dem Sie eine große Textdatei haben ... beginnen Sie mit dem Scannen und machen Sie dann so etwas wie das Echo "bla bla bla" >> Textdatei. Wenn das erfolgreich zum Ende der Datei hinzugefügt wird, würde ich sagen, dass das, was lsof meldet, korrekt ist.
3dinfluence
1

Die meisten Unix-Programme verwenden keine Sperre oder wenn sie diese verwenden, ist dies nicht obligatorisch. Ich bezweifle, dass die Sperrung das Wachstum Ihres Protokolls verhindert. Wahrscheinlicher ist, dass die SCP-Übertragung das Schreiben von Protokollen verlangsamt.

Cristian Ciupitu
quelle