Mount
Fusermount 掛載 SSHFS 目錄手動工作但不能自動工作?
我的工作站執行 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.
這讓我相信 fusermount 命令中的 -u 開關有問題,但是當我在登錄後手動執行腳本時,它工作得很好。如果它手動工作,為什麼它不能自動工作?
我發現了問題。我將 fusermount 腳本添加到 crontab 和 rc.local,它們在啟動時執行腳本。相反,我需要創建一個引用腳本的 .desktop 並將其添加到
/etc/xdg/autostart
- 這在使用者登錄時執行腳本,通常在所有必需的服務都已啟動並且使用者憑據可用於驗證 sshfs 之後。
我遇到了同樣的問題。在嘗試了一切可能的Google搜尋之後,我終於發現問題很奇怪但很簡單 - 只需在安裝 sshfs 後重新啟動機器即可。重新啟動後 fusermount 停止抱怨並且解除安裝按預期工作。