修复 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 杀死该进程。