來源自 這裡
前言 :
當任何目錄有 mount, 然後有程式 使用/掛 在那個目錄上的話, 就沒有辦法 umount 掉, 於 umount 時會出現 Device is busy 的訊息. 問題是要怎麼找出是哪個程式掛在那個目錄上? 然後去把那個程式砍掉呢? 可以考慮使用命令 fuser.
實際範例 :
那要怎麼找出是哪個程式掛在那個目錄上, 可以使用 "fuser - identify processes using files or sockets". 這邊我們要模擬這樣的狀況, 首先將 /dev/sdf1 mount 到 /johnext 上面 :
接著 change directory 到 mount 點, 執行下面 Python 程式碼模擬 "打死不退的" Process :
- hook.py :[b]
接著如下執行 :
接著使用另一個 tty 登入該 Host, 並嘗試 umount /johnext :
而那個 26674 即是PID, 而 c 的含意可以參考如下 :
知道是那些 Processes 造成無法 umount 也確定那些是可以 kill 的 trivial process 後, 可以使用 kill -9 砍到這些 processes :
前言 :
當任何目錄有 mount, 然後有程式 使用/掛 在那個目錄上的話, 就沒有辦法 umount 掉, 於 umount 時會出現 Device is busy 的訊息. 問題是要怎麼找出是哪個程式掛在那個目錄上? 然後去把那個程式砍掉呢? 可以考慮使用命令 fuser.
實際範例 :
那要怎麼找出是哪個程式掛在那個目錄上, 可以使用 "fuser - identify processes using files or sockets". 這邊我們要模擬這樣的狀況, 首先將 /dev/sdf1 mount 到 /johnext 上面 :
接著 change directory 到 mount 點, 執行下面 Python 程式碼模擬 "打死不退的" Process :
- hook.py :[b]
- #!/usr/bin/python
- import time
- print("Hook and don't exit!")
- while True:
- print("Sleep 1 sec...")
- time.sleep(1)
接著使用另一個 tty 登入該 Host, 並嘗試 umount /johnext :
而那個 26674 即是PID, 而 c 的含意可以參考如下 :
知道是那些 Processes 造成無法 umount 也確定那些是可以 kill 的 trivial process 後, 可以使用 kill -9 砍到這些 processes :
This message was edited 9 times. Last update was at 23/08/2012 16:44:24
沒有留言:
張貼留言