是否有用戶級萬無一失的方法強制終止 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

相關內容