修復 Linux 上的裝置或資源繁忙錯誤

Nilesh Katuwal 2023年1月30日
  1. 使用 lsof 在 Linux 的某個目錄中查詢開啟的檔案
  2. 在 Linux 上修復裝置或資源繁忙錯誤的替代方法
修復 Linux 上的裝置或資源繁忙錯誤

本教程將修復 Linux 中的裝置或資源繁忙錯誤。但首先,讓我們瞭解什麼是裝置或資源繁忙。

如果裝置或資源繁忙,則無法刪除某些目錄。當你嘗試通過移動、複製或刪除來更改資料來源上的檔案時,你會收到以下錯誤:裝置或資源繁忙。

使用 lsof 在 Linux 的某個目錄中查詢開啟的檔案

將需要程式 lsof,它代表列出開啟的檔案。使用此工具有多種方法,其中一種是在某個目錄中查詢開啟的檔案。

$ lsof +D /path

輸出:

chrome    39483 39488 GpuMemory           user  mem       REG                8,5    285840   11410830 /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0
chrome    39483 39488 GpuMemory           user  mem       REG                8,5    678064   11411469 /usr/lib/x86_64-linux-gnu/libpixman-1.so.0.38.4
chrome    39483 39488 GpuMemory           user  mem       REG                8,5   1065824   11411080 /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.20600.4
chrome    39483 39488 GpuMemory           user  mem       REG                8,5     41152   11411707 /usr/lib/x86_64-linux-gnu/libthai.so.0.3.1
chrome    39483 39488 GpuMemory           user  mem       REG                8,5    112960   11410855 /usr/lib/x86_64-linux-gnu/libfribidi.so.0.4.0
chrome    39483 39488 GpuMemory           user  mem       REG                8,5     85448   11411836 /usr/lib/x86_64-linux-gnu/libwayland-server.so.0.1.0
chrome    39483 39488 GpuMemory           user  mem       REG                8,5     39448   11410444 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
chrome    39483 39488 GpuMemory           user  mem       REG                8,5     26800   11410422 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
chrome    39483 39488 GpuMemory           user  mem       REG                8,5     18688   11410411 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
chrome    39483 39488 GpuMemory           user  mem       REG                8,5    709496   11409861 /usr/lib/x86_64-linux-gnu/libsystemd.so.0.28.0
chrome    39483 39488 GpuMemory           user  mem       REG                8,5    101320   11411551 /usr/lib/x86_64-linux-gnu/libresolv-2.31.so

執行此命令後,你將通過/path 下的檔案系統獲救,因此最好在大目錄下執行。

在你知道開啟檔案的程序後,你可以退出這些程式或使用 kill 命令殺死它們。

在 Linux 上修復裝置或資源繁忙錯誤的替代方法

在該目錄中鍵入以下命令以檢視其中的內容。

$ls -a

輸出:

 .  ..  destination  source

使用 vi 檢視檔案的內容。

$ vi destination source

輸出:

" ============================================================================
" Netrw Directory Listing                                        (netrw v165)
"   /home/user/user/aven/destination
"   Sorted by      name
"   Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:special
" ==============================================================================
../                                                                                                                                                                   
./
thanosdir/
thanosdir2/
thanosdir4/
thanos.txt
thanos1.txt
thanos2.txt
~

你會注意到,由於錯誤,第八列中的資料被弄亂了。ps-ef 命令可以找到程序 PID

$ ps -ef | grep thanos1.txt

輸出:

user     44317   38941  0 22:10 pts/0    00:00:00 grep --color=auto thanos1.txt

如前所述,輸出包含 PID。我們可以使用 kill PID 殺死該程序。