Linux: umount 時 出現 "Device is busy" 的解法

當任何目錄有 mount, 然後有程式 使用/掛 在那個目錄上的話, 就沒有辦法 umount 掉, 於 umount 時會出現 Device is busy 的訊息.

要怎麼找出是哪個程式掛在那個目錄上? 然後去把那個程式砍掉呢?

使用 fuser 的指令

那要怎麼找出是哪個程式掛在那個目錄上, 可以使用 fuser - identify processes using files or sockets

假設現在 mount 起來的目錄是 /media/share

  • 查詢: 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 -9 25023 # ps aux | grep 25023 應該就會看到它
  • fuser -m -v -i -k /media/share # 會問你是不是要把 25023 這個 kill 掉, 選 y 就會 kill 掉

    訊息如下:
                  USER      PID   ACCESS COMMAND
    /meida/share: root      25023 ..c..  bash
    Kill process 25023 ? (y/N) y

相關網頁


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix。將永久鏈結加入書籤。

Linux: umount 時 出現 "Device is busy" 的解法 有 10 則回應

  1. zhua 說道:

    不錯不錯,學到一招。
    之前要去除掛載不行都等一段時間再重新輸入一次...囧

  2. Sean 說道:

    vi /etc/mtab 把不要的拿掉
    /etc/init.d/autofs restart
    即可 🙂
    忘記是那位長輩的 blog 看來的。

  3. Tsung 說道:

    感謝提供.. Orz..

  4. jt 說道:

    不錯的方法,有解決問題,感謝分享!

  5. adf 說道:

    完來是這樣 感謝!!

  6. medophin 說道:

    我用fuser 的command沒有顯示東西
    vi /etc/mtab之後砍掉我mount的device
    但是找不到/etc/init.d/autofs restart
    最後是登出登入,然後unmount桌面顯示的icon

  7. Tsung 說道:

    你的 fuser command 沒有顯示東西, 就代表不會被卡住.
    直接 df 看 mount 的 device 或目錄, 然後 umount 就可以了. 🙂

  8. 凍仁 說道:

    感謝分享!
    可惜這樣 kill /usr 會連 sshd 都拜拜 Orz..

發表迴響