如何避免sshfs冻结?

And*_*gen 30 ssh mount sshfs

所以问题是这样的:

我已经在 Ubuntu 12.04 上安装了 sshfs,我正在尝试连接到几个远程服务器。所以最初安装似乎是成功的。有时 Gnome 甚至会拿起它并在屏幕底部显示“找到新设备”框。但从这里开始,没有多少有用的了。或者至少不再是。前几次我连接它似乎工作正常,我能够传输一些文件,然后我断开fusermount -u <folder>连接,稍后重新连接后问题开始了。现在执行后sshfs -o ServerAliveInterval=15 -o reconnect -C -o workaround=all -o idmap=user root@<host>:/ <folder>,当我将目录更改为挂载点时,shell 就会冻结。ls -al <folder>仅列出远程系统的根目录时奇怪地工作,但仅此而已。此外,我尝试过的每个文件浏览器都像cd <folder>.

对我来说,似乎有某种僵尸线程或某些东西挂在我的系统上,因为它第一次确实有效,所以我尝试重新启动但没有运气。

sshfs -V 给出了这个:

SSHFS version 2.3
FUSE library version: 2.8.6
fusermount version: 2.8.6
using FUSE kernel interface version 7.12
Run Code Online (Sandbox Code Playgroud)

是的,有什么想法吗?

小智 23

如果您使用 启动 sshfs -o reconnect,杀死它挂起的 SSH 进程将使其重新连接。

首先找到匹配的SSH,例如:

ps -ef
...
user 9644 1 0 11:15 ? 00:00:00 ssh -x -a -oClearAllForwardings=yes -2 <host> -s sftp
...
Run Code Online (Sandbox Code Playgroud)

您可以通过独特的选项集和您将 sshfs 连接到的主机来区分它。然后杀死它,常规的 SIGTERM 应该就足够了:

kill 9644
Run Code Online (Sandbox Code Playgroud)

这应该使 SSHFS 开始一个新的 SSH 会话,并且挂载的文件系统将再次响应,并且挂在它上面的所有进程将继续,就好像什么也没发生一样。

  • 仅供参考:该解决方案看起来对于首先提高 sshfs 连接的稳健性非常有用:https://askubuntu.com/a/716618/327339。另请参阅常见问题解答中的#11:https://github.com/libfuse/sshfs/blob/master/FAQ (2认同)

lor*_*nix 1

您等待冻结解决多久了?这可能只是您和相关服务器之间的传输问题。

我在我的系统和住在郊区的朋友的系统之间使用 sshfs(官方术语!),他使用的是陆路无线网络,偶尔会掉线(我们认为他的接收器在风中飘扬,失去信号锁定)。

如果我等待,它最终会同步并执行操作,但有时它只会挂起几分钟。

草蜢要有耐心!

  • 我尝试过等待一段时间,也许 10-20 分钟,但没有成功。也许只需要几个小时?^^, (2认同)