精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux內(nèi)存配置:overcommit的設(shè)置

Linux閱碼場(chǎng) ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-06-14 11:45 ? 次閱讀

一、前言

終于可以進(jìn)入Linux kernel內(nèi)存管理的世界了,但是從哪里入手是一個(gè)問(wèn)題,當(dāng)面對(duì)一個(gè)復(fù)雜系統(tǒng)的時(shí)候,有時(shí)候不知道怎么開始。遵守“一切以人為本”的原則,我最終選擇先從從userspace的視角來(lái)看內(nèi)核的內(nèi)存管理。最開始的系列文章選擇了vm運(yùn)行參數(shù)這個(gè)主題。執(zhí)行l(wèi)s /proc/sys/vm的命令,你可以看到所有的vm運(yùn)行參數(shù),本文選擇了overcommit相關(guān)參數(shù)來(lái)介紹。

本文的代碼來(lái)自4.0內(nèi)核。

二、背景知識(shí)

要了解這類參數(shù)首先要理解什么是committed virtual memory?使用版本管理工具的工程師都熟悉commit的含義,就是向代碼倉(cāng)庫(kù)提交自己更新的意思,對(duì)于這個(gè)場(chǎng)景,實(shí)際上就是各個(gè)進(jìn)程提交自己的虛擬地址空間的請(qǐng)求。雖然我們總是宣稱每個(gè)進(jìn)程都有自己獨(dú)立的地址空間,但素,這些地址空間都是虛擬地址,就像是鏡中花,水中月。當(dāng)進(jìn)程需要內(nèi)存時(shí)(例如通過(guò)brk分配內(nèi)存),進(jìn)程從內(nèi)核獲得的僅僅是一段虛擬地址的使用權(quán),而不是實(shí)際的物理地址,進(jìn)程并沒(méi)有獲得物理內(nèi)存。實(shí)際的物理內(nèi)存只有當(dāng)進(jìn)程真的去訪問(wèn)新獲取的虛擬地址時(shí),產(chǎn)生“缺頁(yè)”異常,從而進(jìn)入分配實(shí)際物理地址的過(guò)程,也就是分配實(shí)際的page frame并建立page table。之后系統(tǒng)返回產(chǎn)生異常的地址,重新執(zhí)行內(nèi)存訪問(wèn),一切好象沒(méi)有發(fā)生過(guò)。因此,看起來(lái)虛擬內(nèi)存和物理內(nèi)存的分配被分割開了,這是否意味著進(jìn)程可以任意的申請(qǐng)?zhí)摂M地址空間呢?也不行,畢竟virtual memory需要physical memory做為支撐,如果分配了太多的virtual memory,和物理內(nèi)存不成比例,對(duì)性能會(huì)有影響。對(duì)于這個(gè)狀況,我們稱之為overcommit。

三、參數(shù)介紹

1、overcommit_memory。overcommit_memory這個(gè)參數(shù)就是用來(lái)控制內(nèi)核對(duì)overcommit的策略。該參數(shù)可以設(shè)定的值包括:

OVERCOMMIT_ALWAYS表示內(nèi)核并不限制overcommit,無(wú)論進(jìn)程們commit了多少的地址空間的申請(qǐng),go ahead,do what you like,只不過(guò)后果需要您自己的負(fù)責(zé)。OVERCOMMIT_NEVER是另外的極端,永遠(yuǎn)不要overcommit。OVERCOMMIT_GUESS的策略和其名字一樣,就是“你猜”,多么調(diào)皮的設(shè)定啊(后面代碼分析會(huì)進(jìn)一步描述)。BTW,我不太喜歡這個(gè)參數(shù)的命名,更準(zhǔn)確的命名應(yīng)該類似vm_overcommit_policy什么的,大概是歷史的原因,linux kernel一直都是保持了這個(gè)符號(hào)。

2、overcommit_kbytes和overcommit_ratio

OVERCOMMIT_ALWAYS可以很任性,總是允許出現(xiàn)overcommit現(xiàn)象,但是OVERCOMMIT_NEVER不行,這種策略下,系統(tǒng)不允許出現(xiàn)overcommit。不過(guò)要檢查overcommit,具體如何判斷呢,總得有個(gè)標(biāo)準(zhǔn)吧,這個(gè)標(biāo)準(zhǔn)可以從vm_commit_limit這個(gè)函數(shù)看出端倪:

overcommit的標(biāo)準(zhǔn)有兩個(gè)途徑來(lái)設(shè)定,一種是直接定義overcommit_kbytes,這時(shí)候標(biāo)準(zhǔn)值是overcommit_kbytes+total_swap_pages。什么是total_swap_pages呢?這里要稍微講一下關(guān)于頁(yè)面回收(page frame reclaim)機(jī)制。

就虛擬內(nèi)存和物理內(nèi)存的分配策略而言,inux kernel對(duì)虛擬地址空間的分配是比較寬松的(雖然有overcommit機(jī)制),但是,kernel對(duì)用戶空間的物理內(nèi)存申請(qǐng)(創(chuàng)建用戶空間進(jìn)程、用戶空間程序的malloc(就是堆的分配),用戶空間進(jìn)程stack的分配等)是非常的吝嗇的(順便提及的是:內(nèi)存管理模塊對(duì)來(lái)自內(nèi)核的內(nèi)存申請(qǐng)是大方的,內(nèi)核工程師的自豪感是否油然而生,呵呵~~),總是百般阻撓,直到最后一刻實(shí)在沒(méi)有辦法了才分配物理內(nèi)存。這種機(jī)制其背后的思想是更好的使用內(nèi)存,也就是說(shuō):在限定的物理內(nèi)存資源下,可以盡量讓更多的用戶空間進(jìn)程運(yùn)行起來(lái)。如果讓物理地址和虛擬地址空間是一一映射的時(shí)候,那么系統(tǒng)中的可以啟動(dòng)進(jìn)程數(shù)目必定是受限的,進(jìn)程可以申請(qǐng)的內(nèi)存數(shù)目也是受限的,你的程序不得不經(jīng)常面內(nèi)存分配失敗的issue。如果你想破解這個(gè)難題,就需要將一個(gè)較小的物理內(nèi)存空間映射到一個(gè)較大的各個(gè)用戶進(jìn)程組成的虛擬地址空間之上。怎么辦,最簡(jiǎn)單的方法就是“拆東墻補(bǔ)西墻”。感謝程序天生具備局部性原理,可以讓內(nèi)核有東墻可以拆,但是,拆東墻(swap out)也是技術(shù)活,不是所有的進(jìn)程虛擬空間都可以拆。比如說(shuō)程序的正文段的內(nèi)容就是可以拆,因?yàn)檫@些內(nèi)存中的內(nèi)容有磁盤上的程序做支撐,當(dāng)再次需要的時(shí)候(補(bǔ)西墻),可以從磁盤上的程序文件中reload。不是所有的進(jìn)程地址空間都是有file-backup的,堆、stack這些進(jìn)程的虛擬地址段都是沒(méi)有磁盤文件與之對(duì)應(yīng)的,也就是傳說(shuō)中的anonymous page。對(duì)于anonymous page,如果我們建立swap file或者swap device,那么這些anonymous page也同樣可以被交換到磁盤,并且在需要的時(shí)候load進(jìn)內(nèi)存。

OK,我們回到total_swap_pages這個(gè)變量,它其實(shí)就是系統(tǒng)可以將anonymous page交換到磁盤的大小,如果我們建立32MB的swap file或者swap device,那么total_swap_pages就是(32M/page size)。

overcommit的標(biāo)準(zhǔn)的另外一個(gè)標(biāo)準(zhǔn)(在overcommit_kbytes設(shè)定為0的時(shí)候使用)是和系統(tǒng)可以使用的page frame相關(guān)。并不是系統(tǒng)中的物理內(nèi)存有多少,totalram_pages就有多少,實(shí)際上很多的page是不能使用的,例如linux kernel本身的正文段,數(shù)據(jù)段等就不能計(jì)入totalram_pages,還有一些系統(tǒng)reserve的page也不算數(shù),最終totalram_pages實(shí)際上就是系統(tǒng)可以管理分配的總內(nèi)存數(shù)目。overcommit_ratio是一個(gè)百分比的數(shù)字,50表示可以使用50%的totalram_pages,當(dāng)然還有考慮total_swap_pages的數(shù)目,上文已經(jīng)描述。

還有一個(gè)小細(xì)節(jié)就是和huge page相關(guān)的,傳統(tǒng)的4K的page和huge page的選擇也是一個(gè)平衡問(wèn)題。normal page可以靈活的管理內(nèi)存段,浪費(fèi)少。但是不適合大段虛擬內(nèi)存段的管理(因?yàn)橐⒋罅康捻?yè)表,TLB side有限,因此會(huì)導(dǎo)致TLB miss,影響性能),huge page和normal page相反。內(nèi)核可以同時(shí)支持這兩種機(jī)制,不過(guò)是分開管理的。我們本節(jié)描述的參數(shù)都是和normal page相關(guān)的,因此在計(jì)算allowed page的時(shí)候要減去hugetlb_total_pages。

3、admin_reserve_kbytes和user_reserve_kbytes

做任何事情都要留有余地,不要把自己逼到絕境。這兩個(gè)參數(shù)就是防止內(nèi)存管理模塊把自己逼到絕境。

上面我們提到拆東墻補(bǔ)西墻的機(jī)制,但是這種機(jī)制在某些情況下其實(shí)也不能正常的運(yùn)作。例如進(jìn)程A在訪問(wèn)自己的內(nèi)存的時(shí)候,出現(xiàn)page fault,通過(guò)scan,將其他進(jìn)程(B、C、D…)的“東墻”拆掉,分配給進(jìn)程A,以便讓A可以正常運(yùn)行。需要注意的是,“拆東墻”不是那么簡(jiǎn)單的事情,有可能需要進(jìn)行磁盤I/O操作(比如:將dirty的page cache flush到磁盤)。但是,系統(tǒng)很快調(diào)度到了B進(jìn)程,而B進(jìn)程立刻需要?jiǎng)倓偛鸪臇|墻,怎么辦?B進(jìn)程立刻需要分配物理內(nèi)存,如果沒(méi)有free memory,這時(shí)候也只能啟動(dòng)scan過(guò)程,繼續(xù)找新的東墻。在極端的情況下,很有可能把剛剛補(bǔ)好的西墻拆除,這時(shí)候,整個(gè)系統(tǒng)的性能就會(huì)顯著的下降,有的時(shí)候,用戶點(diǎn)擊一個(gè)button,很可能半天才能響應(yīng)。

面對(duì)這樣的情況,用戶當(dāng)然想恢復(fù),例如kill那個(gè)吞噬大量?jī)?nèi)存的進(jìn)程。這個(gè)操作也需要內(nèi)存(需要fork進(jìn)程),因此,為了能夠讓用戶順利逃脫絕境,系統(tǒng)會(huì)保留user_reserve_kbytes的內(nèi)存。

對(duì)于支持多用戶的GNU/linux系統(tǒng)而言,恢復(fù)系統(tǒng)可能需要root用來(lái)來(lái)完成,這時(shí)候需要保留一定的內(nèi)存來(lái)支持root用戶的登錄操作,支持root進(jìn)行trouble shooting(使用ps,top等命令),找到那個(gè)鬧事的進(jìn)程并kill掉它。這些為root用戶操作而保留的memory定義在admin_reserve_kbytes參數(shù)中。

四、代碼分析

用戶空間進(jìn)程在使用內(nèi)存的時(shí)候(更準(zhǔn)確的說(shuō)是分配虛擬內(nèi)存,其實(shí)用戶空間根本無(wú)法觸及物理內(nèi)存的分配,那是內(nèi)核的領(lǐng)域),內(nèi)核都會(huì)調(diào)用__vm_enough_memory函數(shù)來(lái)驗(yàn)證是否可以允許分配這段虛擬內(nèi)存,代碼如下:

int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin) { …… if (sysctl_overcommit_memory == OVERCOMMIT_ALWAYS) ----(1) return 0;

if (sysctl_overcommit_memory == OVERCOMMIT_GUESS) { free = global_page_state(NR_FREE_PAGES); free += global_page_state(NR_FILE_PAGES); free -= global_page_state(NR_SHMEM);

free += get_nr_swap_pages(); free += global_page_state(NR_SLAB_RECLAIMABLE); ------(2)

if (free <= totalreserve_pages) ------------------(3)???????????? goto error;???????? else???????????? free -= totalreserve_pages;

if (!cap_sys_admin) ----------------------(4) free -= sysctl_admin_reserve_kbytes >> (PAGE_SHIFT - 10);

if (free > pages) ------------------------(5) return 0;

goto error; }

allowed = vm_commit_limit(); -------------------(6) if (!cap_sys_admin) allowed -= sysctl_admin_reserve_kbytes >> (PAGE_SHIFT - 10); --參考(4)的解釋

if (mm) { ----------------------------(7) reserve = sysctl_user_reserve_kbytes >> (PAGE_SHIFT - 10); allowed -= min_t(long, mm->total_vm / 32, reserve); }

if (percpu_counter_read_positive(&vm_committed_as) < allowed) ----(8)???????? return 0;

……}

(1)OVERCOMMIT_ALWAYS奏是辣么自由,隨你overcommit,只要你喜歡。return 0表示目前有充足的virtual memory資源。

(2)OVERCOMMIT_GUESS其實(shí)就是讓內(nèi)核自己根據(jù)當(dāng)前的狀況進(jìn)行判斷,因此首先進(jìn)入收集信息階段,看看系統(tǒng)有多少free page frame(NR_FREE_PAGES標(biāo)記,位于Buddy system的free list中),這些是優(yōu)質(zhì)資源,沒(méi)有任何的開銷就可以使用。NR_FILE_PAGES是page cache使用的page frame,主要是用戶空間進(jìn)程讀寫文件造成的。這些cache都是為了加快系統(tǒng)性能而增加的,因此,如果直接操作到磁盤,本質(zhì)上這些page cache都是free的。不過(guò),這里有一個(gè)特例就是NR_SHMEM,它主要是用于進(jìn)程間的share memory機(jī)制,這些shmem page frame不能認(rèn)為是free的,因此要減去。get_nr_swap_pages函數(shù)返回swap file或者swap device上空閑的“page frame”數(shù)目。本質(zhì)上,swap file或者swap device上的磁盤空間都是給anonymous page做騰挪之用,其實(shí)這里的“page frame”不是真的page frame,我們稱之swap page好了。get_nr_swap_pages函數(shù)返回了free swap page的數(shù)目。這里把free swap page的數(shù)目也計(jì)入free主要是因?yàn)榭梢园咽褂弥械膒age frame swap out到free swap page上,因此也算是free page,雖然開銷大了一點(diǎn)。至于NR_SLAB_RECLAIMABLE,那就更應(yīng)該計(jì)入free page了,因?yàn)閟lab對(duì)象都已經(jīng)標(biāo)注自己的reclaim的了,當(dāng)然是free page了。

(3)要解釋totalreserve_pages需要太長(zhǎng)的篇幅,我們這里略過(guò),但這是一個(gè)能讓系統(tǒng)運(yùn)行需要預(yù)留的page frame的數(shù)目,因此我們要從減去totalreserve_pages。如果當(dāng)前free page數(shù)目小于totalreserve_pages,那么當(dāng)然拒絕vm的申請(qǐng)。

(4)如果是普通的進(jìn)程,那么還需要保留admin_reserve_kbytes的free page,以便在出問(wèn)題的時(shí)候可以讓root用戶可以登錄并進(jìn)行恢復(fù)操作。

(5)最關(guān)鍵的來(lái)了,比對(duì)本次申請(qǐng)virtual memory的page數(shù)目和當(dāng)前“free”(之所以加引號(hào)表示并真正free page frame數(shù)目)的數(shù)據(jù),如果在保留了足夠的page frame之后,還有足夠的page可以滿足本次分配,那么就批準(zhǔn)本次vm的分配。

(6)從這里開始,進(jìn)入OVERCOMMIT_NEVER的處理。從vm_commit_limit函數(shù)中可以獲取一個(gè)基本的判斷overcommit的標(biāo)準(zhǔn),當(dāng)然要根據(jù)具體情況進(jìn)行調(diào)整,例如說(shuō)admin_reserve_kbytes。

(7)如果是用戶空間的進(jìn)程,我們還要為用戶能夠從絕境中恢復(fù)而保留一些page frame,具體保留多少需要考量?jī)蓚€(gè)因素,一個(gè)是單一進(jìn)程的total virtual memory,一個(gè)用戶設(shè)定的運(yùn)行時(shí)參數(shù)user_reserve_kbytes。更具體的考量因素可以參考https://lkml.org/lkml/2013/3/18/812,這里就不贅述了。

(8)allowed變量保存了判斷overcommit的上限,vm_committed_as保存了當(dāng)前系統(tǒng)中已經(jīng)申請(qǐng)(包括本次)的virtual memory的數(shù)目。如果大于這個(gè)上限就判斷overcommit,本次申請(qǐng)virtual memory失敗。

五、參考文獻(xiàn)

1、Documentation/vm/overcommit-accounting

2、Documentation/sysctl/vm.txt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11229

    瀏覽量

    208927
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3002

    瀏覽量

    73885

原文標(biāo)題:郭健:Linux內(nèi)存管理系統(tǒng)參數(shù)配置之overcommit

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)存管理是什么,Linux內(nèi)存管理詳解

    Linux內(nèi)存管理 Linux內(nèi)存管理是一個(gè)非常復(fù)雜的過(guò)程,主要分成兩個(gè)大的部分:內(nèi)核的內(nèi)存管理和進(jìn)程虛擬
    的頭像 發(fā)表于 05-11 17:54 ?5980次閱讀
    <b class='flag-5'>Linux</b>的<b class='flag-5'>內(nèi)存</b>管理是什么,<b class='flag-5'>Linux</b>的<b class='flag-5'>內(nèi)存</b>管理詳解

    如何在Linux設(shè)置Git

    Linux設(shè)置 Git 十分簡(jiǎn)單,但為了獲得完美的配置,我做了以下五件事。
    發(fā)表于 10-21 09:06 ?1179次閱讀

    走進(jìn)Linux內(nèi)存系統(tǒng)探尋內(nèi)存管理的機(jī)制和奧秘

    Linux 內(nèi)存是后臺(tái)開發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹Linux 內(nèi)存組織結(jié)構(gòu)
    的頭像 發(fā)表于 01-05 09:47 ?1599次閱讀

    請(qǐng)問(wèn)如何在Linux Device Tree中配置預(yù)留內(nèi)存

    請(qǐng)問(wèn)如何在Linux Device Tree中配置預(yù)留內(nèi)存
    發(fā)表于 12-29 06:22

    MCUXpresso如何根據(jù)“構(gòu)建配置設(shè)置不同的內(nèi)存配置

    我將 MCUXpresso v11.6 與 MKL33Z256 一起使用。 我有兩個(gè)“構(gòu)建??配置”:- 調(diào)試-發(fā)布(=調(diào)試但代碼優(yōu)化) 我還會(huì)修改調(diào)試和發(fā)布配置之間的內(nèi)存映射。因?yàn)?Debug
    發(fā)表于 03-29 06:47

    linux內(nèi)存管理機(jī)制淺析

    本內(nèi)容介紹了arm linux內(nèi)存管理機(jī)制,詳細(xì)說(shuō)明了linux內(nèi)核內(nèi)存管理,linux虛擬內(nèi)存
    發(fā)表于 12-19 14:09 ?73次下載
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)存</b>管理機(jī)制淺析

    Linux主機(jī)IP配置

    Linux如何進(jìn)行靜態(tài)IP的設(shè)置,在主機(jī)下運(yùn)行IP配置的指令
    發(fā)表于 06-03 14:30 ?0次下載

    linux內(nèi)存管理

    linux內(nèi)存管理
    發(fā)表于 10-24 11:12 ?3次下載
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)存</b>管理

    如何設(shè)置電腦的虛擬內(nèi)存

    隨著現(xiàn)在電腦的流行,各種品牌的電腦已經(jīng)非常普遍了,而且配置越來(lái)越高,內(nèi)存也越來(lái)越大,同時(shí)虛擬內(nèi)存的擴(kuò)展也增大了,那么虛擬內(nèi)存怎么設(shè)置最好?下
    發(fā)表于 05-27 17:34 ?2310次閱讀

    深入剖析Linux共享內(nèi)存原理

    Linux系統(tǒng)中,每個(gè)進(jìn)程都有獨(dú)立的虛擬內(nèi)存空間,也就是說(shuō)不同的進(jìn)程訪問(wèn)同一段虛擬內(nèi)存地址所得到的數(shù)據(jù)是不一樣的,這是因?yàn)椴煌M(jìn)程相同的虛擬內(nèi)存地址會(huì)映射到不同的物理
    的頭像 發(fā)表于 10-30 09:52 ?2248次閱讀
    深入剖析<b class='flag-5'>Linux</b>共享<b class='flag-5'>內(nèi)存</b>原理

    Linux系統(tǒng)的共享內(nèi)存的使用

    但有時(shí)候?yàn)榱俗尣煌M(jìn)程之間進(jìn)行通信,需要讓不同進(jìn)程共享相同的物理內(nèi)存Linux通過(guò) 共享內(nèi)存 來(lái)實(shí)現(xiàn)這個(gè)功能。下面先來(lái)介紹一下Linux系統(tǒng)的共享
    的頭像 發(fā)表于 11-14 11:55 ?1278次閱讀

    Linux 內(nèi)存管理總結(jié)

    一、Linux內(nèi)存管理概述 Linux內(nèi)存管理是指對(duì)系統(tǒng)內(nèi)存的分配、釋放、映射、管理、交換、壓縮等一系列操作的管理。在
    的頭像 發(fā)表于 11-10 14:58 ?499次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>內(nèi)存</b>管理總結(jié)

    linux查看服務(wù)器配置

    Linux操作系統(tǒng)中,了解服務(wù)器配置對(duì)于系統(tǒng)管理員和網(wǎng)絡(luò)工程師而言至關(guān)重要。通過(guò)查看服務(wù)器配置,您可以了解服務(wù)器的硬件和軟件組成部分,包括CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-17 09:41 ?1081次閱讀

    linux手動(dòng)設(shè)置網(wǎng)絡(luò)參數(shù)

    Linux 是一種廣泛使用的操作系統(tǒng),提供了豐富的網(wǎng)絡(luò)配置選項(xiàng),允許用戶手動(dòng)設(shè)置網(wǎng)絡(luò)參數(shù),以滿足各種網(wǎng)絡(luò)需求。本文將詳盡、詳實(shí)、細(xì)致地介紹 Linux 中手動(dòng)
    的頭像 發(fā)表于 11-27 15:20 ?665次閱讀

    Linux環(huán)境變量配置方法

    Linux上環(huán)境變量配置分為設(shè)置永久變量和臨時(shí)變量?jī)煞N。環(huán)境變量設(shè)置方法同時(shí)要考慮環(huán)境Shell類型,不同類型的SHELL設(shè)置臨時(shí)變量方法和
    的頭像 發(fā)表于 10-23 13:39 ?124次閱讀