linux 中卸载提示设备正忙怎么办?
?
?
執(zhí)行NFS掛載時,你可能會看到設(shè)備繁忙狀態(tài)。在這種情況下,你必須以適當(dāng)?shù)姆绞綇?qiáng)制卸載。
在這種情況下,我們創(chuàng)建了?/var/linoxide?安裝目錄。如果嘗試卸載遠(yuǎn)程分區(qū),則會收到錯誤消息。
#?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在最后兩行中,已安裝的文件夾顯示在客戶端上。以下示例顯示由于設(shè)備繁忙而導(dǎo)致卸載失敗
#?umount?/mnt/nfs/linoxide_srv/ umount.nfs4:?/mnt/nfs/linoxide_srv:?device?is?busy使用lsof
lsof(列出打開的文件)命令顯示特定文件系統(tǒng),目錄或設(shè)備上所有打開的文件及其關(guān)聯(lián)進(jìn)程的列表。默認(rèn)情況下,它列出所有當(dāng)前打開的文件,共享庫和目錄,并提供有關(guān)每個文件的盡可能多的信息。可以使用管道對輸出進(jìn)行過濾,以提供諸如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存在使用已安裝文件夾的進(jìn)程的PID,并顯示正在執(zhí)行的命令和執(zhí)行該命令的用戶。你可以殺死正在使用的進(jìn)程,但可以處理執(zhí)行的命令。你可以看到vim命令。這意味著linoxide用戶正在編輯文件。因此,如果你殺死進(jìn)程,他的進(jìn)度將會丟失。讓我們看一下結(jié)果,假設(shè)你已通知他
#?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看來用戶已停止進(jìn)行更改,但仍在運行bash命令,但我不知道為什么。你可以使用kill命令殺死兩個進(jìn)程。不要錯過被殺死的進(jìn)程的PID。
殺死第一個bash進(jìn)程
# kill -9 24098
你可以檢查結(jié)果
#?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你可以看到一個進(jìn)程被殺死了
# kill -9 24125
讓我們回顧第二個過程
#?lsof?/mnt/nfs/linoxide_srv/讓我們卸載文件夾
#?umount?/mnt/nfs/linoxide_srv/ umount:?/mnt/nfs/linoxide_srv/:?not?mounted殺進(jìn)程時,似乎自動卸載了該文件夾,但讓我們用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根據(jù)需要卸載。
fuser
fuser(查找用戶進(jìn)程)命令可以幫助識別阻止文件系統(tǒng)卸載的進(jìn)程。查找與指定為命令行參數(shù)的文件,目錄或文件系統(tǒng)安裝點關(guān)聯(lián)的用戶進(jìn)程。
#?fuser?/mnt/nfs/linoxide_srv/ /mnt/nfs/linoxide_srv:?24191c你可以使用fuser命令?-m?列出訪問文件的所有進(jìn)程或文件系統(tǒng)上的掛載點的選項?-v?顯示PID命令,用戶,已執(zhí)行命令等結(jié)果的選項。
#?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你可以檢查正在執(zhí)行的命令。你需要防止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命令直接停止運行進(jìn)程。-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檢查結(jié)果
#?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該文件夾已根據(jù)需要卸載。
延遲卸載
umount命令?-l?選擇執(zhí)行延遲卸載。該掛載已從文件系統(tǒng)名稱空間中刪除(?未在下方顯示?/mnt/nfs/linoxide?已經(jīng))?但它仍然安裝,因此訪問它的程序仍然可以訪問它。當(dāng)最后一個訪問程序結(jié)束時,將執(zhí)行實際卸載。
#?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用戶仍在修改文件,或者可以創(chuàng)建新文件。在服務(wù)器上,你可以看到用戶正在修改哪些文件。
你需要緊急卸載分區(qū)或僅刪除設(shè)備,但是由于設(shè)備繁忙,這可能會引起問題。在決定如何解決問題之前,必須檢查系統(tǒng)上的所有進(jìn)程。使用lsof和fuser命令可以輕松識別阻止文件系統(tǒng)卸載的進(jìn)程
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的linux 中卸载提示设备正忙怎么办?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思科路由器动态NAT配置
- 下一篇: 思科、华为、Juniper命令对比