ulimit詳解

前段時(shí)間去面試滴滴,面試官問(wèn)了一些linux相關(guān)的問(wèn)題,其中有一個(gè)關(guān)于ulimit問(wèn)題,本人當(dāng)時(shí)也沒(méi)有給出很詳細(xì)的回答,在此惡補(bǔ)一下。

ulimit簡(jiǎn)介
ulimit是bash內(nèi)鍵命令,它具有一套參數(shù)集,用于為由它生成的shell進(jìn)程及其子進(jìn)程的資源使用設(shè)置限制。可以使用help ulimit查詢手冊(cè)

ulimit命令使用

      Linux對(duì)于每個(gè)用戶,系統(tǒng)限制其最大進(jìn)程數(shù)。為提高性能,可以根據(jù)設(shè)備資源情況,設(shè)置linux用戶的最大進(jìn)程數(shù)
      可以用ulimit - a來(lái)顯示當(dāng)前的各種用戶進(jìn)程限制
      下面我把某Linux用戶的最大進(jìn)程數(shù)設(shè)為10000個(gè)
                   ulimit -u 10240
                  對(duì)于需要做許多socket連接并使它們處于打開(kāi)狀態(tài)的java應(yīng)用程序而言,
                  最好通過(guò)使用ulimit -n xx修改每個(gè)進(jìn)程可打開(kāi)的文件數(shù),缺省值是1024
                  ulimit -n 4096將每個(gè)進(jìn)程可以打開(kāi)的文件數(shù)目加大到4096,缺省是1024
       其他 建議設(shè)置成無(wú)限制(unlimited)的一些重要設(shè)置是:
                數(shù)據(jù)段長(zhǎng)度:ulimit -d unlimited
                最大內(nèi)存大小:ulimit -m unlimited
                堆棧大?。簎limit -s unlimited
                cpu時(shí)間:ulimit -t unlimited
                虛擬內(nèi)存:ulimit -v unlimited
        還有一些常用的選項(xiàng)如下:
                ulimit -Hs 64:硬限制資源,線程棧大小為64k
                ulimit -Sn 32:軟限制資源,32個(gè)文件描述符
                ulimit -a:顯示當(dāng)前所有l(wèi)imit信息
                ulimit -c unlimited:對(duì)生成的core文件大小不進(jìn)行限制
                ulimit -f 2048:限制進(jìn)程可創(chuàng)建的最大文件大小為2048blocks
                ulimt -i 32:限制最大可加鎖內(nèi)存大小為kbytes
                ulimit -p 512:限制管道緩沖區(qū)的大小為512kbytes
                ulimit -u 64:限制用戶最多可以使用64個(gè)進(jìn)程
          注意:這個(gè)當(dāng)中的硬限制是實(shí)際的限制,而軟限制,是warning限制,只會(huì)做出warning;其中ulimit命令本身就有分軟硬設(shè)置,默認(rèn)顯示的是軟限制,如果運(yùn)行ulimit命令修改的時(shí)候沒(méi)有加上的話,就是兩個(gè)參數(shù)一起改變  

ulimit的使用方式及作用范圍
在用戶的啟動(dòng)腳本里

   如果用戶使用的是bash,就可以在用戶目錄下的.bashrc文件中,加入ulimit -u 64,來(lái)限制用戶最多可以使用64個(gè)進(jìn)程,此外,可以在于.bashrc功能相當(dāng)?shù)膯?dòng)腳本中加入ulimit

應(yīng)用程序的啟動(dòng)腳本中

  編寫個(gè)簡(jiǎn)單的啟動(dòng)腳本startmyapp
      #/bin/sh
      ulimit -n 512
      myapp.sh
   以這個(gè)startmyapp啟動(dòng)myapp.sh時(shí),myapp.sh這個(gè)腳本打開(kāi)的文件句柄數(shù)不超過(guò)512個(gè)

直接控制臺(tái)輸入

    [root@web ~]#ulimit -p 512
    限制管道緩沖區(qū)為256k

ulimit作為對(duì)資源使用限制的一種工作,是有其作用范圍的。那么,它限制的對(duì)象是單個(gè)用戶,單個(gè)進(jìn)程,還是整個(gè)系統(tǒng)呢?事實(shí)上,ulimit限制的是當(dāng)前shell進(jìn)程以及其派生的子進(jìn)程
舉例來(lái)說(shuō),如果用戶同時(shí)運(yùn)行了兩個(gè)shell終端進(jìn)程,只在其中一個(gè)環(huán)境中執(zhí)行了ulimit -s 100,則該shell進(jìn)程里創(chuàng)建文件的大小收到相應(yīng)的限制,而同時(shí)另一個(gè)shell終端包括其上運(yùn)行的子程序都不會(huì)受到其影響
ulimit相關(guān)配置文件

主配置文件:/etc/security/limits.conf
分段配置文件:/etc/security/limits.d/*.conf
    通過(guò)修改系統(tǒng)的/etc/security/limits.conf配置文件。該文件不僅能限制指定用戶的資源使用,還能限制指定組的資源使用。該文件的每一行都是對(duì)限定的一個(gè)描述
    格式如下:
                    #<domain>  <type>  <item>  <value>
     名稱                                                含義
      domain                                  表示用戶或者組的名字,還可以使用*作為通配符代表所有用戶,組名前面加@和用戶名區(qū)別
      type                                    可以有兩個(gè)值,soft和hard,soft指的是當(dāng)前系統(tǒng)生效的設(shè)置值,hard表明系統(tǒng)中所能設(shè)定的最大值,用-就表示同時(shí)設(shè)置了soft和hard的值
      item                                    表明需要限定的資源,可以有很多候選值,如stack,cpu等,分別表示最大的堆棧大小,占用 的cpu時(shí)間,noproc是代表進(jìn)程數(shù),nofile是代表文件打開(kāi)數(shù)
      value                                    對(duì)應(yīng)相應(yīng)的值
編輯保存之后,需要重新登錄一次才能生效
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容