2016年3月14日 星期一

[Linux 常見問題] rm: cannot remove `dir` Device or resource busy

Source From Here
Question
刪除目錄的時候無法刪除:
# mount -t nfs Y1:/tmp/just4test Y1_tmp/ // 故意 mount 一個遠端機器的 nfs
# mount | grep Y1 // 確定 mount 成功
Y1:/tmp/just4test on /root/test/Y1_tmp type nfs4...
# rm -rf Y1_tmp/ // 此時無法移除目錄 Y1_tmp
rm: 無法移除 ‘Y1_tmp/’: 裝置或系統資源忙碌中

為了模擬底下使用命令 lsof 檢查是否有人正在操作目錄 Y1_tmp, 請開另一個 terminal 並在該目錄下操作檔案. 底下介紹如何解決上面 device or resource busy 的問題.

How-To
Step1. 使用命令 lsof 查看
使用 lsof 命令查看是誰佔用了這個目錄:
# lsof | grep Y1_tmp
vim 29875 root 4u REG 0,43 4096 2621683 /root/test/Y1_tmp/.test.swp (Y1:/tmp/just4test)
# kill -s 9 29875 // 刪除正在操過該目錄的 Process, 此時會發現另一個 terminal 的 vim 回到 terminal 
# lsof | grep Y1_tmp // 此時應該沒人在操作該目錄了.
# rm -rf Y1_tmp/ // 但還時無法移除目錄
rm: 無法移除 ‘Y1_tmp/’: 裝置或系統資源忙碌中


Step2. 使用命令 mount 檢查 mount point
接著我們使用命令 mount 來檢查目錄是否被當作 mount point:
# mount -l | grep Y1_tmp
Y1:/tmp/just4test on /root/test/Y1_tmp type nfs4... // 原來是該目錄被當作 mount point, umount 它!
# umount Y1_tmp/
# rm -rf Y1_tmp/ // 此時應該可以順利移除該目錄


沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...