Fro*_*dik 10 mount suspend networking sshfs
我正在使用带有reconnect属性的SSHFS 。当我暂停笔记本并重新启动它时,它工作正常。但问题是当我把笔记本带到某个地方时 - 意味着不同的 IP 和不同的连接(可能是 Wifi 或以太网)。
挂载的 SSHFS 文件夹只会冻结,还会冻结所有使用它的应用程序。到目前为止我唯一的解决方案是使用
sudo umount -f /mnt/sshfs_folder
Run Code Online (Sandbox Code Playgroud)
这远不是很好的解决方案,但到目前为止唯一有效的解决方案。有没有办法让 SSHFS 无缝地处理这个问题,这样挂起后改变网络连接就不会引起任何问题?
哦,我有 Ubuntu 14.04,但我想这是特定于 SSHFS 的。
我写了一个 shell 脚本,调用sshfs-reconnect如下:
while true
do
sshfs -f -o ConnectTimeout=3,ConnectionAttempts=1,ServerAliveInterval=5,ServerAliveCountMax=3 $@
echo "disconnected from $@"
sleep 3
echo "retry $@ ..."
done
Run Code Online (Sandbox Code Playgroud)
如果我让它在后台运行,它就会具有大多数所需的行为:
有关此解决方案的详细信息:
-o reconnect这里使用,因为我不希望 sshfs 尝试无限期地重新连接,因为这会导致等待已安装文件系统的任何进程永远挂起。相反,我让 sshfs 在一定的超时后断开连接,并让那些等待的进程正常失败。ServerAliveInterval=5,ServerAliveCountMax=3表示 ssh 每 5 秒检查一次以查看远程服务器是否仍在响应。如果在 3 次检查后仍未收到响应,则会自动断开连接。因此,在此挂载上等待的任何进程最多应挂起约 15 秒。ConnectTimeout=3,ConnectionAttempts=1是必要的,因为否则 ssh 在尝试重新建立连接时将等待很长时间,如果其他进程在此期间尝试访问挂载,这将再次导致挂起。更彻底的答案在这里:SSHFS - auto reconnect。
简而言之,使用:
# create local folder to mount into
mkdir -p ~/mnt/my_server
# now mount your SSH File System
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 \
username@server_hostname:/path/on/server/to/mount ~/mnt/my_server
Run Code Online (Sandbox Code Playgroud)
要卸载文件系统:
sudo umount ~/mnt/my_server
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7367 次 |
| 最近记录: |