通过 sshfs 对文本文件执行 tail -f 不起作用。为什么?

通过 sshfs 对文本文件执行 tail -f 不起作用。为什么?

我成功地针对远程 ssh 主机安装了本地文件夹。

我现在想做一个tail -500f my_text_file,但效果不是很好。虽然它确实打开了 tail 并向我显示了文件内容,但该-f部分肯定无法正常工作。一定跟有什么关系sshfs。当我进行常规 ssh 连接时,效果非常好。

有关如何解决此问题的任何指示吗?我正在使用sudo apt install sshfs在 Ubuntu 中执行操作时获得的 sshfs 版本。

答案1

tail -f尝试使用文件更改通知机制(inotify)。 SSHFS,与其他任何文件系统一样保险丝文件系统,不支持此机制。通常tail应该自己发现这一点。如果这不起作用,您可以使用未记录的选项---disable-inotify(以三个破折号开头,因为它是未记录的选项)强制使用适用于任何文件系统的轮询模式。

tail ---disable-inotify -n 500 -f my_text_file

答案2

sshfs使用sftp协议来列出和传输文件,并且在sftp协议中(至少在 OpenSSH 中实现),不可能通知本地tail有关远程文件的更新。

正如 @vovick 所提议的,您可以使用各种方法来解决这个问题,例如使用轮询。或者更好的方法,tail直接在远程服务器上运行(除非它是sftp-only)。

相关内容