linux 中卸载提示设备正忙怎么办?
?
?
執行NFS掛載時,你可能會看到設備繁忙狀態。在這種情況下,你必須以適當的方式強制卸載。
在這種情況下,我們創建了?/var/linoxide?安裝目錄。如果嘗試卸載遠程分區,則會收到錯誤消息。
#?df?-h Filesystem?Size?Used?Avail?Use%?Mounted?on /dev/vda1??20G?3G?18G?7%?/ devtmpfs??236M?0?236M?0%?/dev tmpfs?????245M?0?245M?0%?/dev/shm tmpfs?????245M?4M?237M?4%?/run tmpfs?????245M?0?245M?0%?/sys/fs/cgroup tmpfs??????49M?0?49M?0%?/run/user/0 1241:/var/linoxide?20G?3G?18G?7%?/mnt/nfs/linoxide_srv 1241:/home?20G?3G?18G?7%?/mnt/nfs/home_srv在最后兩行中,已安裝的文件夾顯示在客戶端上。以下示例顯示由于設備繁忙而導致卸載失敗
#?umount?/mnt/nfs/linoxide_srv/ umount.nfs4:?/mnt/nfs/linoxide_srv:?device?is?busy使用lsof
lsof(列出打開的文件)命令顯示特定文件系統,目錄或設備上所有打開的文件及其關聯進程的列表。默認情況下,它列出所有當前打開的文件,共享庫和目錄,并提供有關每個文件的盡可能多的信息。可以使用管道對輸出進行過濾,以提供諸如PID,USER等信息。
#?lsof?/mnt/nfs/linoxide_srv/ COMMAND?PID?USER?FD?TYPE?DEVICE?SIZE/OFF?NODE?NAME bash?24098?root?cwd?DIR?253,1?4096?519062?/mnt/nfs/linoxide_srv bash?24125?root?cwd?DIR?253,1?4096?519062?/mnt/nfs/linoxide_srv vim?24144?linoxide?cwd?DIR?253,1?4096?519062?/mnt/nfs/linoxide_srv存在使用已安裝文件夾的進程的PID,并顯示正在執行的命令和執行該命令的用戶。你可以殺死正在使用的進程,但可以處理執行的命令。你可以看到vim命令。這意味著linoxide用戶正在編輯文件。因此,如果你殺死進程,他的進度將會丟失。讓我們看一下結果,假設你已通知他
#?lsof?/mnt/nfs/linoxide_srv/ COMMAND?PID?USER?FD?TYPE?DEVICE?SIZE/OFF?NODE?NAME bash?24098?root?cwd?DIR?253,1?4096?519062?/mnt/nfs/linoxide_srv bash?24125?root?cwd?DIR?253,1?4096?519062?/mnt/nfs/linoxide_srv看來用戶已停止進行更改,但仍在運行bash命令,但我不知道為什么。你可以使用kill命令殺死兩個進程。不要錯過被殺死的進程的PID。
殺死第一個bash進程
# kill -9 24098
你可以檢查結果
#?lsof?/mnt/nfs/linoxide_srv/ COMMAND?PID?USER?FD?TYPE?DEVICE?SIZE/OFF?NODE?NAME bash?24125?root?cwd?DIR?253,1?4096?519062?/mnt/nfs/linoxide_srv你可以看到一個進程被殺死了
# kill -9 24125
讓我們回顧第二個過程
#?lsof?/mnt/nfs/linoxide_srv/讓我們卸載文件夾
#?umount?/mnt/nfs/linoxide_srv/ umount:?/mnt/nfs/linoxide_srv/:?not?mounted殺進程時,似乎自動卸載了該文件夾,但讓我們用df命令檢查一下
#?df?-h Filesystem?Size?Used?Avail?Use%?Mounted?on /dev/vda1?20G?3G?18G?7%?/ devtmpfs??236M?0?236M?0%?/dev tmpfs?????245M?0?245M?0%?/dev/shm tmpfs?????245M?3M?237M?4%?/run tmpfs?????245M?0?245M?0%?/sys/fs/cgroup tmpfs?????49M?0?49M?0%?/run/user/0 1241:/home?20G?3G?18G?7%?/mnt/nfs/home_srv目錄?/mnt/nfs/linoxide_srv根據需要卸載。
fuser
fuser(查找用戶進程)命令可以幫助識別阻止文件系統卸載的進程。查找與指定為命令行參數的文件,目錄或文件系統安裝點關聯的用戶進程。
#?fuser?/mnt/nfs/linoxide_srv/ /mnt/nfs/linoxide_srv:?24191c你可以使用fuser命令?-m?列出訪問文件的所有進程或文件系統上的掛載點的選項?-v?顯示PID命令,用戶,已執行命令等結果的選項。
#?fuser?-mv?/mnt/nfs/linoxide_srv/USER?PID?ACCESS?COMMAND /mnt/nfs/linoxide_srv:root?kernel?mount?/mnt/nfs/home_srvroot?24191?..c..?bashroot?24275?..c..?bashlinoxide?24290?..c..?vim你可以檢查正在執行的命令。你需要防止linoxide用戶保存其工作。
#?fuser?-mv?/mnt/nfs/linoxide_srv/USER?PID?ACCESS?COMMAND /mnt/nfs/linoxide_srv:root?kernel?mount?/mnt/nfs/home_srvroot?24191?..c..?bashroot?24275?..c..?bash你可以使用fuser命令直接停止運行進程。-k?無選項-kill命令
#?fuser?-kmv?/mnt/nfs/linoxide_srv/USER?PID?ACCESS?COMMAND /mnt/nfs/linoxide_srv:root?kernel?mount?/mnt/nfs/home_srvroot?24191?..c..?bashroot?24275?..c..?bash檢查結果
#?fuser?-mv?/mnt/nfs/linoxide_srv/USER?PID?ACCESS?COMMAND/mnt/nfs/linoxide_srv:root?kernel?mount?/mnt/nfs/home_srv只有掛載似乎正在運行。讓我們卸載文件夾
#?umount?/mnt/nfs/linoxide_srv/沒有錯誤消息。檢查安裝點
#?df?-h Filesystem?Size?Used?Avail?Use%?Mounted?on /dev/vda1??20G?3G?18G?7%?/ devtmpfs??236M?0?236M?0%?/dev tmpfs?????245M?0?245M?0%?/dev/shm tmpfs?????245M?3M?237M?4%?/run tmpfs?????245M?0?245M?0%?/sys/fs/cgroup tmpfs??????49M?0?49M?0%?/run/user/0 1241:/home?20G?3G?18G?7%?/mnt/nfs/home_srv我們可以看到它
/mnt/nfs/linoxide_srv該文件夾已根據需要卸載。
延遲卸載
umount命令?-l?選擇執行延遲卸載。該掛載已從文件系統名稱空間中刪除(?未在下方顯示?/mnt/nfs/linoxide?已經)?但它仍然安裝,因此訪問它的程序仍然可以訪問它。當最后一個訪問程序結束時,將執行實際卸載。
#?fuser?-mv?/mnt/nfs/linoxide_srv/USER?PID?ACCESS?COMMAND /mnt/nfs/linoxide_srv:root?kernel?mount?/mnt/nfs/home_srvroot?24366?..c..?bashroot?24381?..c..?bashlinoxide?24398?..c..?vim你可以看到該文件夾正忙。讓我們嘗試延遲卸載
#?umount?-l?/mnt/nfs/linoxide_srv/沒有錯誤消息。檢查命令是否正確運行
#?echo?$? 0檢查安裝點
#?df?-h Filesystem?Size?Used?Avail?Use%?Mounted?on /dev/vda1?20G?3G?18G?7%?/ devtmpfs??236M?0?236M?0%?/dev tmpfs?????245M?0?245M?0%?/dev/shm tmpfs?????245M?4M?237M?4%?/run tmpfs?????245M?0?245M?0%?/sys/fs/cgroup tmpfs??????49M?0?49M?0%?/run/user/0 1241:/home?20G?3G?18G?7%?/mnt/nfs/home_srv我知道掛載點?/mnt/nfs/linoxide_srv它不會再次顯示,但是例如,如前所述,linoxide用戶仍在修改文件,或者可以創建新文件。在服務器上,你可以看到用戶正在修改哪些文件。
你需要緊急卸載分區或僅刪除設備,但是由于設備繁忙,這可能會引起問題。在決定如何解決問題之前,必須檢查系統上的所有進程。使用lsof和fuser命令可以輕松識別阻止文件系統卸載的進程
?
?
?
?
總結
以上是生活随笔為你收集整理的linux 中卸载提示设备正忙怎么办?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思科路由器动态NAT配置
- 下一篇: 这些 Linux 的“自动化”技巧,教你