是否有用户级万无一失的方法来强制终止 sshfs 连接?

是否有用户级万无一失的方法来强制终止 sshfs 连接?

我希望sshfs连接在一段时间后终止,最多一小时,这意味着使用atfusermount -u启动安装相同的命令或脚本启动该命令sshfs

但是我注意到,fusermount如果文件正在使用中,则可能会失败,尽管我希望at无论连接中是否仍有文件打开,该命令都可以工作。

根据我的经验,唯一可靠的方法是以fusermountroot 身份运行命令或sshfs通过kill命令终止连接。

有没有其他方法可以在不以 root 身份运行的情况下强制断开连接?问题是当文件仍然打开时我可能不在终端,但为了安全起见,除非我取消命令,否则必须断开连接at

答案1

如果您只想释放挂载点,而不关心终止 SSH 连接,则可以运行fusermount -z /mount/point.这将执行延迟卸载:挂载点不再与挂载关联,但挂载不会消失,直到该挂载上的所有打开的文件都关闭为止。

如果您只想关闭SSH连接而不关心挂载,则可以简单地杀死SFTP服务器进程。这就是 FUSE 的美妙之处:杀死提供服务的进程,它就会消失。挂载无法锁定系统资源。尝试访问文件系统的进程将收到错误(ENOTCONN“传输端点未连接”)。

如果您想终止在该文件系统上打开文件的进程,您可以使用fuser命令(与 FUSE 无关,除了 F 是“file”的第一个字母)。

fuser -k /mount/point

相关内容