Ubuntu

Ubuntu:網路驅動器上不可移動的 .tmp 文件,沒有 PID

  • November 17, 2016

**tl;dr 版本:**我在本地網路驅動器上有一個 localdb.kdbx.tmp 文件,我無法重命名/刪除/複製/覆蓋/打開/等。所有嘗試,sudo 或其他方式,都會引發“設備或資源繁忙”錯誤。執行 fuser 和 lsof 什麼也沒顯示;據我所知,沒有任何東西正在主動訪問該文件,並且沒有關聯的 PID 或父程序。使用 FUSE 設置重新安裝驅動器以允許 root 和其他使用者沒有區別。文件權限正常,目錄中的所有其他內容(備份等)都按預期執行。

**詳細資訊:**我有一個託管在本地網路驅動器上的 KeePass 共享數據庫,該驅動器在多台現場電腦之間共享。有些機器執行 Windows,有些執行 Linux。我個人使用安裝了 keepass2 2.34 的 32 位 Ubuntu 14.04。

昨天嘗試將一些最近的更新保存到 localdb.kdbx KP 數據庫時(當時我是唯一訪問該文件的人),Keepass 拋出錯誤並說數據庫可能已損壞。我關閉了我的機器,假設我可以在第二天覆蓋該文件。但是當我今天早上進來並連接到驅動器時,localdb.kdbx 僅作為 localdb.kdbx.tmp 存在,沒有人可以打開它(KeePass 專門拋出“路徑上的鎖衝突”錯誤)。

我會在 KeePass 的論壇上解決問題,但我們只需要能夠使用文件名,所以我很樂意刪除它,這樣我就可以從備份中重新創建它。問題是,每當我嘗試對文件執行任何操作時,都會收到“設備或資源繁忙”錯誤。在 .tmp 文件上使用 lsof 和 fuser 只會返回一個沒有 PID 的空白,因此沒有什麼可殺死的,也沒有辦法“釋放”文件以進行刪除。我認為這可能是一個 FUSE 問題,並嘗試瞭如何獲得 sudo 訪問由 Gigolo 掛載的共享的解決方案和警告:不能 stat() fuse.gvfsd-fuse 文件系統沒有運氣。

有小費嗎?

**ETA:**我錯了;該驅動器不是SMB Windows 機器,而是執行 QNAP Linux 3.2.26 版本的機器(avahi-discover 將其選為 Windows)。

原來網路驅動器是一台 SMB Windows 機器(我錯誤地認為它是 Linux)(見 ETA)並且鎖定文件的程序正在由 Windows 執行。我沒有考慮到 lsof 和 fuser 只返回它們正在執行的機器的程序(即我的本地機器,而不是網路驅動器:)。

網路驅動器沒有啟用 ssh 並且 smbclient 沒有使我能夠覆蓋鎖定,所以我要求我們的網路管理員重新啟動驅動器。該過程終止,我能夠刪除該文件。

(供他人參考:我使用 avahi-discover 獲取網路驅動器的作業系統和其他詳細資訊。)

向@derobert 的道具指出伺服器程序的方向。

引用自:https://unix.stackexchange.com/questions/302395