在 Linux 下,有時候對 deviec 進行 umount 的時候,會出現 Device is busy 的情況,出現這個狀況的原因,可能是你有某個 shell 還停留在掛載這個設備 的資料夾下,也有可能是這個設備正在進行檔案儲存等狀況,那遇到這個狀況 時要怎麼辦呢?
使用 fuser 找出佔用的程式
假設我們掛載設備的路徑為 /media/share
,則你可以使用 fuser
指令來對他進行查詢
coldnew@gentoo ~ $ fuser -m /media/share
使用這個命令後,你會看到如下的顯示
/media/share: 25023c
這代表 process 25023(pid)有使用到此目錄,後面的 c 的意思可以參照下表
c: current directory. e: executable being run. f: open file. f is omitted in default display mode. F: open file for writing. F is omitted in default display mode. r: root directory. m: mmap'ed file or shared library.
釋放被佔用的資源
要釋放被佔用的資源,我們可以使用傳統的 kill
命令
kill -9 25023 # 25023 is the process ID
或是再使用 fuser 命令,你會看到如下的訊息,選擇 y 就可以將該 process 移除
coldnew@gentoo ~ $ sudo fuser -m -v -i -k /media/share USER PID ACCESS COMMAND /meida/share: root 25023 ..c.. bash Kill process 25023 ? (y/N) y