![Fusermount挂载SSHFS目录可以手动工作但不能自动工作?](https://linux22.com/image/101330/Fusermount%E6%8C%82%E8%BD%BDSSHFS%E7%9B%AE%E5%BD%95%E5%8F%AF%E4%BB%A5%E6%89%8B%E5%8A%A8%E5%B7%A5%E4%BD%9C%E4%BD%86%E4%B8%8D%E8%83%BD%E8%87%AA%E5%8A%A8%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我的工作站运行 Debian Jessie 和应该当用户登录到桌面时,自动通过 SSHFS 挂载远程目录。我们有一个位于用户工作站上的脚本来执行此操作:
#!/bin/bash
fusermount -u ~/remote-directory
sshfs -o reconnect remote@server:/home/shared ~/remote-directory
我已经尝试了我能想到的一切。我在 crontab @reboot 和 rc.local 中引用了 .sh 文件(在将波浪号更改为目录的直接路径之后),然后更改它以便运行命令本身。我已确保 .sh 和 rc.local 都是可执行的。
当我重新启动工作站时,该目录仍然不会自动挂载。检查系统日志,我收到以下错误:
rc.local[3140]: fusermount: failed to unmount /home/user/remote-directory: Invalid argument
systemd-udevd[1592]: Process '/bin/mount -t fusectl fusectl /sys/fs/fuse/connections' failed with exit code 32.
这让我相信 fusionrmount 命令中的 -u 开关有问题,但是当我登录后手动运行脚本时,它工作得很好。为什么不会呢只是工作如果手动工作的话会自动进行吗?
答案1
我遇到了同样的问题。经过多次谷歌搜索和尝试一切可能的方法后,我终于发现问题很奇怪但很简单——只需在安装 sshfs 后重新启动机器即可。重新启动后,fusermount 停止抱怨并且卸载按预期进行。
答案2
我发现了问题。我将 fusionrmount 脚本添加到 crontab 和 rc.local,它们在启动时运行该脚本。相反,我需要创建一个引用脚本的 .desktop 并将其添加到/etc/xdg/autostart
- 这会在用户登录时运行脚本,通常是在所有必需的服务已启动并且用户凭据可用于验证 sshfs 之后。