在Linux中,引入“命名空間”的概念是為了在不同的進(jìn)程組之間隔離系統(tǒng)資源。作為六種不同類型的Linux命名空間之一,網(wǎng)絡(luò)命名空間在邏輯上隔離與不同進(jìn)程組之間的網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)設(shè)備,IP地址,路由表)相關(guān)聯(lián)的系統(tǒng)資源,從而為每個進(jìn)程組提供主機(jī)網(wǎng)絡(luò)堆棧的不同視圖。此功能通常用于操作系統(tǒng)級虛擬化。 可以通過ip命令創(chuàng)建和刪除Linux網(wǎng)絡(luò)命名空間,
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、察隅ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的察隅網(wǎng)站制作公司
如下所示。
$ sudo ip netns add
’ $ sudo ip netns del
假設(shè)您要清理Linux系統(tǒng)上的所有現(xiàn)有命名空間。當(dāng)然你可以用上面的ip命令逐個刪除每個命名空間,但這可能很麻煩。以下是從命令行中刪除所有網(wǎng)絡(luò)命名空間的方法
方法一
該IP命令來自iproute2的包。最新的iproute2包允許ip命令為所有對象執(zhí)行指定的操作(例如,對于所有現(xiàn)有的命名空間)。為此,它提供“-all”選項
例如,在Ubuntu 15.10或Fedora
23上,ip命令可以使用“-all”選項一次刪除所有名稱空間。
$ sudo ip -all netns delete
但是,如果您的Linux系統(tǒng)沒有安裝兼容的iproute2軟件包,您將遇到以下錯誤。
選項“-all”未知,請嘗試“ip-help”
方法二
對于那些沒有安裝最新iproute2軟件包的人,可以使用xargs和ip的組合刪除所有網(wǎng)絡(luò)名稱空間,如下所示。
$ ip netns | xargs -I {} sudo ip netns delete{}
基本上,您將多行命名空間列表傳遞給xargs,然后xargs將為每個命名空間運行ip命令。
轉(zhuǎn)自 嘉為教育-rhce認(rèn)證_rhce培訓(xùn)_linux培訓(xùn)_linux認(rèn)證_linux考證
前三個和最后一個是兩個類型。前三個主要是Linux用來創(chuàng)建新的進(jìn)程(線程)而設(shè)計的,exec()系列函數(shù)則是用來用指定的程序替換當(dāng)前進(jìn)程的所有內(nèi)容。所以exec()系列函數(shù)經(jīng)常在前三個函數(shù)使用之后調(diào)用,來創(chuàng)建一個全新的程序運行環(huán)境。Linux用init進(jìn)程啟動其他進(jìn)程的過程一般都是這樣的。
下面說fork、vfork和clone三個函數(shù)。這三個函數(shù)分別調(diào)用了sys_fork、sys_vfork、sys_clone,最終都調(diào)用了do_fork函數(shù),差別在于參數(shù)的傳遞和一些基本的準(zhǔn)備工作不同??梢娺@三者最終達(dá)到的最本質(zhì)的目的都是創(chuàng)建一個新的進(jìn)程。在這里需要明確一下,Linux內(nèi)核中沒有獨立的“線程”結(jié)構(gòu),Linux的線程就是輕量級進(jìn)程,換言之基本控制結(jié)構(gòu)和Linux的進(jìn)程是一樣的(都是通過struct task_struct管理)。
fork是最簡單的調(diào)用,不需要任何參數(shù),僅僅是在創(chuàng)建一個子進(jìn)程并為其創(chuàng)建一個獨立于父進(jìn)程的空間。fork使用COW(寫時拷貝)機(jī)制,并且COW了父進(jìn)程的??臻g。
vfork是一個過時的應(yīng)用,vfork也是創(chuàng)建一個子進(jìn)程,但是子進(jìn)程共享父進(jìn)程的空間。在vfork創(chuàng)建子進(jìn)程之后,父進(jìn)程阻塞,直到子進(jìn)程執(zhí)行了exec()或者exit()。vfork最初是因為fork沒有實現(xiàn)COW機(jī)制,而很多情況下fork之后會緊接著exec,而exec的執(zhí)行相當(dāng)于之前fork復(fù)制的空間全部變成了無用功,所以設(shè)計了vfork。而現(xiàn)在fork使用了COW機(jī)制,唯一的代價僅僅是復(fù)制父進(jìn)程頁表的代價,所以vfork不應(yīng)該出現(xiàn)在新的代碼之中。在Linux的manpage中隊vfork有這樣一段話:It is rather unfortunate that Linux revived this specter from the past. The BSD man page states: "This system call will be eliminated when proper system sharing mechanisms are implemented. Users should not depend on the memory sharing semantics of vfork() as it will, in that case, be made synonymous to fork(2)."
clone是Linux為創(chuàng)建線程設(shè)計的(雖然也可以用clone創(chuàng)建進(jìn)程)。所以可以說clone是fork的升級版本,不僅可以創(chuàng)建進(jìn)程或者線程,還可以指定創(chuàng)建新的命名空間(namespace)、有選擇的繼承父進(jìn)程的內(nèi)存、甚至可以將創(chuàng)建出來的進(jìn)程變成父進(jìn)程的兄弟進(jìn)程等等。clone和fork的調(diào)用方式也很不相同,clone調(diào)用需要傳入一個函數(shù),該函數(shù)在子進(jìn)程中執(zhí)行。此外,clone和fork最大不同在于clone不再復(fù)制父進(jìn)程的??臻g,而是自己創(chuàng)建一個新的。
關(guān)于Linux命令的介紹,看看《linux就該這么學(xué)》,具體關(guān)于這一章地址3w(dot)linuxprobe/chapter-02(dot)html
6種名稱空間:
命名空間和cgroups是軟件集裝箱化(Docker)的大部分新趨勢的主要內(nèi)核技術(shù)之一。 簡單來說,cgroups是一種計量和限制機(jī)制,它們控制您可以使用多少系統(tǒng)資源(CPU,內(nèi)存)。 另一方面,命名空間限制了您可以看到的內(nèi)容。 由于命名空間進(jìn)程有自己的系統(tǒng)資源視圖
UTS namespace(UNIX Timesharing System包含了運行內(nèi)核的名稱、版本、底層體系結(jié)構(gòu)類型等信息)用于系統(tǒng)標(biāo)識。包含了hostname 和域名domainname 。它使得一個容器擁有屬于自己hostname標(biāo)識,這個主機(jī)名標(biāo)識獨立于宿主機(jī)系統(tǒng)和其上的其他容器
抽象的概念??戳艘幌聞e人的解析,寫一下:
從Linux 2.6.24版的內(nèi)核開始,Linux 就支持6種不同類型的命名空間。(具體也沒記?。?/p>
命名空間是一種輕量級的虛擬化手段;
傳統(tǒng)的虛擬化軟件,是虛擬化多個不同的操作系統(tǒng),對共享資源的限制很大;
通過提供命名空間,可以讓進(jìn)程與進(jìn)程之間,用戶與用戶之間彼此看不到對方。
命名空間,相當(dāng)于容器。
命名空間,本質(zhì)上建立了系統(tǒng)的不同視圖。
網(wǎng)頁名稱:linux命名空間命令 linux namespaces
當(dāng)前URL:http://chinadenli.net/article36/dogedsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)