如何避免 sshfs 冻结?

如何避免 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

答案1

如果您使用 启动 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
...

然后你可以通过不同的选项集和你连接 sshfs 的主机来区分它们。然后杀死它,常规 SIGTERM 应该就足够了:

kill 9644

这应该会使 SSHFS 启动一个新的 SSH 会话,并且已挂载的文件系统将再次响应,并且挂在其上的所有进程将继续,就像什么都没发生一样。

答案2

用于每秒向服务器发送消息。这将能够sshfs -o reconnect,ServerAliveInterval=1 your-remote-ssh: your-local-folder快速检测断开连接并自动重新连接以避免可能的挂起和冻结。sshsshfs

答案3

这是一篇旧帖子,我没有给出最终的解决方案,但我认为我遇到了同样的问题(在 Ubuntu 14.04 上),就我而言,延迟卸载和重新安装是有效的(尽管有点烦人):

fusermount -u -z /local/folder
sshfs -C user@server:/remote/folder /local/folder

我怀疑您只是在查看缓存的结果ls -al <folder>

答案4

我也遇到了同样的问题 -cd花费的时间几乎接近大爆炸事件。

问题很简单 - 我一直在使用 Git 扩展作为 shell,它git status在后台运行。这意味着 Git 必须先下载大量数据。

切换到“无扩展” shell 解决了该问题cd

相关内容