一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

解決類似umount target is busy掛載盤卸載不掉問題

 rongq2007 2020-12-30

問題描述

Linux下掛載后的分區(qū)或者磁盤某些時候需要umount的時候出現(xiàn)類似“umount: /mnt: target is busy.”等字樣,或者“umount: /xxx: device is busy.”。

問題原因

該報錯通常是由于待卸載磁盤正在使用,導致無法直接卸載。需要將當前使用數(shù)據(jù)盤的進程殺掉,才能卸載。

解決辦法

 方法一、 使用fuser命令處理

安裝fuser命令

[root@server-10 ~]# yum install psmisc

查看在使用的進程

[root@server-10 ~]# fuser -mv /mnt/
                     USER        PID ACCESS COMMAND/mnt:                root     kernel mount /mnt
                     root      13830 ..c.. bash

殺死占用的進程,并再次查看

[root@server-10 ~]# fuser -kv /mnt/
                     USER        PID ACCESS COMMAND/mnt:                root     kernel mount /mnt
                     root      13830 ..c.. bash
[root@server-10 ~]# fuser -mv /mnt/
                     USER        PID ACCESS COMMAND/mnt:                root     kernel mount /mnt

確認無進程連接后,使用卸載命令

[root@server-10 ~]# umount /mnt/[root@server-10 ~]#

參數(shù)說明:

-k,--kill kill   processes accessing the named file
-m,--mount    show all processes using the named filesystems or block device
-v,--verbose    verbose output

注意
可以使用 fuser -km /mnt 進行 kill 進程。
可以使用 kill 命令殺掉查到對應的進程 。
強制 kill 進程可能會導致數(shù)據(jù)丟失,請確保數(shù)據(jù)得到有效備份后,再進行相關(guān)操作。

方法二、通過lsof命令處理

[root@server-10 ~]# lsof /mnt/COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    16302 root  cwd    DIR   8,17       50   64 /mnt

找到PID對應的進程或者服務,然后殺死或者停止相應服務即可。

轉(zhuǎn)貼地址:http://www./linuxxitongguanli/836.html

為了干凈地關(guān)閉或熱交換 UNIX 或類 UNIX 系統(tǒng)上的存儲硬件,必須能夠卸載使用此設(shè)備上的存儲的所有文件系統(tǒng)。但是,如果正在使用文件系統(tǒng)中的文件或目錄,就無法卸載它。lsof 和 fuser 命令可以幫助您識別并終止那些正在使用存儲設(shè)備上的文件或從存儲設(shè)備執(zhí)行的進程。使用這些命令有助于尋找那些阻止存儲設(shè)備卸載的進程,減少麻煩,讓您能夠繼續(xù)處理更重要的系統(tǒng)管理任務。

所有計算機操作系統(tǒng)都在引導時檢查它們掛載的文件系統(tǒng)是否是一致的,也就是說,確認它們的內(nèi)部數(shù)據(jù)結(jié)構(gòu)和映射到的相關(guān)存儲沒有錯誤。UNIX、Linux 和其他類 UNIX 操作系統(tǒng)采用一種聰明的方法檢查文件系統(tǒng)的一致性(通常使用 fast 命令)。當這些系統(tǒng)掛載文件系統(tǒng)時,它們在文件系統(tǒng)頭中設(shè)置一個值,把文件系統(tǒng)標為 DIRTY,這意味著它正在使用,在向它寫入更新時可能暫時處于不一致的狀態(tài)。在系統(tǒng)關(guān)閉期間卸載文件系統(tǒng)時,把它們標為 CLEAN。在重新引導系統(tǒng)時,只需要檢查仍然標為 DIRTY 的文件系統(tǒng)的一致性。

在系統(tǒng)關(guān)閉過程中,會自動地卸載文件系統(tǒng),這通常在終止所有非系統(tǒng)進程之后進行。但是,卸載文件系統(tǒng)仍然可能失敗并顯示以下消息:

在這里,busy 意味著一個進程正在寫這個文件系統(tǒng)或者進程是從它運行的。在這兩種情況下,都無法卸載文件系統(tǒng),這是計算機系統(tǒng)的基本規(guī)則之一。如果不采用這個規(guī)則,可以 在進程正在寫文件系統(tǒng)包含的文件時卸載文件系統(tǒng),就會讓文件處于不一致的狀態(tài),而文件系統(tǒng)本身標為 CLEAN。

umount 命令的標準 Linux 版本包含一個延遲卸載選項 -l,它有助于卸載正在使用的文件系統(tǒng)。這個命令需要 Linux 內(nèi)核 2.4.11 或更高版本,目前這通常沒問題。執(zhí)行 umount -l /name/of/file system 可以讓指定的文件系統(tǒng)與系統(tǒng)的目錄層次結(jié)構(gòu)脫離,讓新進程不能使用這個文件系統(tǒng),然后當正在訪問它的所有進程都終止時卸載它。這很方便,但是當需要馬上卸載文件系統(tǒng)時它并不合適。

如果需要馬上卸載文件系統(tǒng),而文件系統(tǒng)報告忙碌,還有其他辦法。如果您是系統(tǒng)的惟一用戶,那么只需終止阻止文件系統(tǒng)卸載的進程。這需要查看所有窗口,尋找 并終止正在寫這個分區(qū)或使用它作為當前工作目錄的暫停的進程或后臺進程。但是,在有許多本地用戶和遠程用戶的多用戶系統(tǒng)上,這種方法是不實際的。幸運的 是,開放源碼社區(qū)提供了一些命令,可以輕松地識別并終止這些進程。

用 lsof 尋找打開的文件

lsof (list open files) 命令列出特定的文件系統(tǒng)、目錄或設(shè)備上所有打開的文件以及與它們相關(guān)聯(lián)的進程。在大多數(shù) UNIX 和類 UNIX 系統(tǒng)上都可以使用 lsof 命令。

在默認情況下,lsof 命令列出當前打開的所有文件、共享庫和目錄,并提供盡可能多的相關(guān)信息。即使在負載很輕的系統(tǒng)上,這個命令的輸出也非常長,因此通常通過命令行參數(shù)指定一 個目錄名,或者使用管道篩選它的輸出。例如,假設(shè)希望卸載掛載在 /opt2目錄上的文件系統(tǒng)。為了查看與 /opt2 目錄相關(guān)聯(lián)的所有進程,應該執(zhí)行下面所示的命令。



 

需要終止所有這些進程,然后才能卸載 /opt2 分區(qū)。因為這個列表中的進程都不能寫任何文件,所以可以使用 kill 命令并指定第二列中列出的進程 ID (PID) 以終止它們,然后就可以順利地卸載分區(qū)。注意,PID 23402 與最后兩行相關(guān)聯(lián) — 第一行表示 more 命令以 /opt2 作為當前工作目錄 (cwd),第二行表示 more 命令打開了 /opt2/resume.txt 文件。

但是,假設(shè) lsof 命令的輸出像下面這樣。

前三個與 /opt2 目錄相關(guān)聯(lián)的命令與前面一樣,但是后兩個命令是由另一個用戶運行的。其中的 emacs 命令用于編輯文件,所以可以讓 USER 列中列出的用戶保存文件并退出,然后終止這個進程。

lsof 命令還有許多選項,可以幫助您識別不同類型的文件系統(tǒng)上打開的文件和目錄、打開了網(wǎng)絡(luò)套接字的進程、正在使用特定的庫的進程等等。lsof 命令的缺點是,必須聯(lián)系用戶并要求他們終止某些進程,或者自己手工終止它們。fuser 命令更復雜,但是更強大,在作為根用戶運行時可以替您執(zhí)行許多進程終止工作。

用 fuser 尋找用戶進程

fuser (find user processes) 命令也是一個開放源碼應用程序,可以幫助您識別阻止文件系統(tǒng)卸載的進程。fuser 命令尋找與作為命令行參數(shù)指定的文件、目錄或文件系統(tǒng)相關(guān)聯(lián)的進程。本文主要關(guān)注對文件系統(tǒng)掛載點使用 fuser。關(guān)于 fuser 命令的更多信息,請參見它的在線參考信息。fuser 命令要求系統(tǒng)支持 /proc 文件系統(tǒng)。因此,在所有 Linux 發(fā)行版和 FreeBSD 系統(tǒng)上都可以使用它。關(guān)于獲得 fuser 命令的源代碼的方法請參見 參考資料。

與 lsof 命令一樣,作為命令行參數(shù)提供文件系統(tǒng)掛載點名稱是使用 fuser 命令識別阻止文件系統(tǒng)卸載的進程的最簡單方法:



 

fuser 命令的輸出指出正在使用指定掛載點的進程的 PID。每個 PID 后面有一個字母,它表示與 PID 相關(guān)聯(lián)的進程以什么方式使用指定的掛載點。最常見的字母是前面示例所示的 c,這表示指定的進程使用此文件系統(tǒng)上的一個目錄作為當前工作目錄。

但是,fuser 命令的默認輸出不便于最終用戶使用,即使按 Linux 標準來看也是如此。fuser 命令提供一個 -v 選項,它在 fuser 命令的輸出中增加一些與標準 ps 命令相似的輸出,如下面所示。



 

這更方便,因為它至少指出了進程是什么程序。在通過 fuser 命令獲得 PID 信息之后,可以在終止進程之前結(jié)合使用標準的 ps 和 egrep 命令了解盡可能詳細的相關(guān)信息,如下面所示

然后,可以使用標準的 kill 命令手工終止指定的進程,或者像下一節(jié)中解釋的,使用 fuser 命令的一些高級功能自動地終止它們。

用 fuser 終止進程

在通過參數(shù)指定掛載點時,fuser 命令的 -k 選項會自動地終止找到的進程。當然,必須作為根用戶執(zhí)行 fuser 命令,才能終止屬于其他用戶的進程,如下面所示



在這里,第二個進程 (emacs) 是第一個進程 (bash shell) 的子進程,因此在 fuser 命令殺死第一個進程時它就會終止。

如果希望指定底層物理設(shè)備名,而不是它包含的文件系統(tǒng)的掛載點,那么還必須指定 -m 選項,如下面所示

第一個命令返回的輸出符合預期,因為它引用文件系統(tǒng)的掛載點。第二個命令表明,不能使用標準的 fuser 選項直接查詢底層設(shè)備。第三個命令說明,-m 選項允許直接指定設(shè)備??梢栽诘谝粋€和第三個命令中添加 -k 選項,從而終止與 /dev/sdb1 設(shè)備上的文件系統(tǒng)相關(guān)聯(lián)的進程。

有時候,為了應對一些緊急情況或者刪除掛載的 CD-ROM 或 DVD 等設(shè)備,Linux 或 UNIX 系統(tǒng)管理員需要卸載分區(qū)。在由于設(shè)備忙系統(tǒng)不允許刪除它的情況下,檢查系統(tǒng)上的所有進程是一個很煩人、很緩慢的過程。lsof 和 fuser 命令有助于識別阻止文件系統(tǒng)卸載的進程。如果情況非常緊急,fuser 命令甚至可以替您終止它們。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产高清精品福利私拍| 正在播放玩弄漂亮少妇高潮| 中文字幕日韩欧美一区| 国产免费成人激情视频| 日韩在线视频精品视频| 国产精品白丝久久av| 丝袜破了有美女肉体免费观看| 国产精品午夜一区二区三区 | 欧美日韩国产另类一区二区| 国产免费观看一区二区| 国产成人午夜在线视频| 日韩不卡一区二区在线| 亚洲天堂男人在线观看| 欧美一区日韩一区日韩一区| 亚洲精品国产第一区二区多人| 亚洲欧美日韩熟女第一页| 欧美成人黄色一区二区三区| 欧美黑人在线一区二区| 久热人妻中文字幕一区二区| 日本加勒比在线播放一区| 欧美一区二区三区性视频| 99久久精品午夜一区| 国产精品免费自拍视频| 日韩成人高清免费在线| 粉嫩内射av一区二区| 国内女人精品一区二区三区| 久久本道综合色狠狠五月| 老外那个很粗大做起来很爽| 欧美一级不卡视频在线观看| 91免费一区二区三区| 国产丝袜女优一区二区三区| 亚洲一区二区欧美激情| 日本特黄特色大片免费观看 | 亚洲国产一级片在线观看| 97精品人妻一区二区三区麻豆| av在线免费播放一区二区| 丁香七月啪啪激情综合| 制服丝袜美腿美女一区二区| 日韩一区中文免费视频| 亚洲少妇一区二区三区懂色| 国产成人精品久久二区二区|