Das Ausführen eines tail -f für eine Textdatei über sshfs funktioniert nicht. Warum?

8

Ich habe erfolgreich einen lokalen Ordner gegen einen Remote-SSH-Host gemountet.

Ich wollte jetzt ein machen, tail -500f my_text_fileaber es funktioniert nicht sehr gut. Obwohl es den Schwanz öffnet und mir den Dateiinhalt zeigt, -ffunktioniert das Teil definitiv nicht. Es muss etwas damit zu tun haben sshfs. Wenn ich eine normale SSH-Verbindung herstelle, funktioniert das wunderbar.

Irgendwelche Hinweise, wie man das behebt? Ich benutze die sshfs-Version, die man bekommt, wenn man eine sudo apt install sshfsin Ubuntu macht.

verschlungenes Elysium
quelle
2
Macht das Laufen tailmit ---disable-inotify[sic] einen Unterschied? Gibt Ihnen der Schwanz irgendwelche Warnungen? Inotify, dass Tail standardmäßig verwendet werden soll, wird von sshfs nicht unterstützt.
Undercat applaudiert Monica
Unabhängig davon, ob dies hilft, können Sie versuchen, den Befehl mit so etwas wiewhile true; do clear; tail -500 my_text_file; sleep 1; done
undercat applaudiert Monica

Antworten:

6

tail -fversucht, einen Benachrichtigungsmechanismus für Dateiänderungen zu verwenden ( inotify ). SSHFS unterstützt diesen Mechanismus wie jedes andere FUSE- Dateisystem nicht. Normalerweise tailsollte dies von selbst entdeckt werden. Wenn dies nicht funktioniert, können Sie die Option undokumentiert ---disable-inotify(beginnend mit drei Strichen, da es sich um eine undokumentierte Option handelt) verwenden, um die Verwendung des Abfragemodus zu erzwingen, der auf jedem Dateisystem funktioniert.

tail ---disable-inotify -n 500 -f my_text_file
Gilles 'SO - hör auf böse zu sein'
quelle
2

sshfsverwendet das sftpProtokoll zum Auflisten und Übertragen von Dateien und im sftpProtokoll (zumindest wie es in OpenSSH implementiert ist) gibt es keine Möglichkeit, Ihren lokalen Benutzer zu benachrichtigentail über Aktualisierungen der Remote-Datei .

Wie von @vovick vorgeschlagen, können Sie dies mithilfe verschiedener Ansätze umgehen, z. B. mithilfe von Abfragen. Oder besser, führen Sie das taildirekt auf dem Remote-Server aus (es sei denn, es ist sftp-nur).

Jakuje
quelle