• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

               C++ 技術(shù)中心

               :: 首頁(yè) :: 聯(lián)系 ::  :: 管理
              160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

            公告

            鄭重聲明:本BLOG所發(fā)表的原創(chuàng)文章,作者保留一切權(quán)利。必須經(jīng)過(guò)作者本人同意后方可轉(zhuǎn)載,并注名作者(天空)和出處(CppBlog.com)。作者Email:coder@luckcoder.com

            留言簿(27)

            搜索

            •  

            最新隨筆

            最新評(píng)論

            評(píng)論排行榜

            這一部分的提出是為了防止失控的進(jìn)程破壞系統(tǒng)的性能

            nuix和Linux跟蹤進(jìn)程使用的大部分資源,允許用戶和系統(tǒng)管理員使用對(duì)進(jìn)程的資源限制

             設(shè)置的限制有兩種: 硬限制和軟限制

            硬限制是可以在任何時(shí)候任何進(jìn)程中設(shè)置  但硬限制只能由超級(jí)用戶提起

            軟限制是內(nèi)核實(shí)際執(zhí)行的限制,任何進(jìn)程都可以將軟限制設(shè)置為任意小于等于對(duì)進(jìn)程限制的硬限制的值


            ———————以下內(nèi)容為轉(zhuǎn)載(突然發(fā)現(xiàn)這方面有好資源便直接引用了)—————————

            getrlimit和setrlimit函數(shù)
              每個(gè)進(jìn)程都有一組資源限制,其中某一些可以用getrlimit和setrlimit函數(shù)查詢和更改。

            #include
            #include
            int getrlimit(int resource,struct rlimit *rlptr);
            int setrlimit(int resource,const struct rlimit rlptr);
            Both return: 0 if OK,nonzero on error兩個(gè)函數(shù)

              返回:若成功為0,出錯(cuò)為非0

              對(duì)這兩個(gè)函數(shù)的每一次調(diào)用都指定一個(gè)資源以及一個(gè)指向下列結(jié)構(gòu)的指針。

            struct rlimit{
            rlim rlim rlimit_ur;/* 軟限制:當(dāng)前限制 */
            rlim rlim rlim_ax;/* 硬限制:rlimcur的最大值 */
            };

            可用的值

            RLIMIT _AS                進(jìn)程可用的內(nèi)存的最大數(shù)量,包括堆棧、全局變量、動(dòng)態(tài)內(nèi)存

            RLIMIT _CORE           內(nèi)核生成的core文件的最大大小

            RLIMIT _CPU             所用的全部cpu時(shí)間 以秒計(jì)算

            RLIMIT _DATA           數(shù)據(jù)存儲(chǔ)的最大容量,以字節(jié)計(jì)算,不包括程序分配的動(dòng)態(tài)存儲(chǔ)空間

            RLIMIT _FSIZE          打開文件的最大數(shù)目

            RLIMIT _MEMLOCK  

            RLIMIT _NOFILE      

            RLIMIT _NPROC       進(jìn)程可以產(chǎn)生的最大子進(jìn)程數(shù)量

            RLIMIT _RSS            可以隨時(shí)使用的內(nèi)存最大容量

            RLIMIT _STACK        堆棧存儲(chǔ)區(qū)的最大容量


              這兩個(gè)函數(shù)不屬于POSIX.1,但SVR4和4.3+BSD提供它們。SVR4在上面的結(jié)構(gòu)中使用基本系統(tǒng)數(shù)據(jù)類型rlim。其它系統(tǒng)則將這

            兩個(gè)成員定義為整型或長(zhǎng)整型。

              進(jìn)程的資源限制通常是在系統(tǒng)初啟時(shí)由0#進(jìn)程建立的,然后由后續(xù)進(jìn)程繼承。在SVR4中,系統(tǒng)默認(rèn)值可以查看文

            件/etc/conf/cfd/mtune在4.3+BSD中,系統(tǒng)默認(rèn)值分散在多個(gè)頭文件中。

              在更改資源限制時(shí),須遵循下列三條規(guī)則:

              1.任何一個(gè)進(jìn)程都可將一個(gè)軟限制更改為小于或等于其硬限制。
              2.任何一個(gè)進(jìn)程都可降低其硬限制值,但它必須大于或等于其軟限制值。這種降低,對(duì)普通用戶而言是不可逆反的。
              3.只有超級(jí)用戶可以提高硬限制。

              一個(gè)無(wú)限量的限制由常數(shù)RLIM NFINITY指定。

              這兩個(gè)函數(shù)的resource參數(shù)取下列值之一。注意并非所有資源限制都受到SVR4和4.3+BSD的支持。

              RLMITCORE(SVR4及4.3+BSD)core文件的最大字節(jié)數(shù),若其值為0則阻止創(chuàng)建core文件。
              RLIMIT PU(SVR4及4.3+BSD)CPU時(shí)間的最大量值(秒),當(dāng)超過(guò)此軟限止時(shí),向該進(jìn)程發(fā)送SIGXCPU信號(hào)。
              RLIMIT ATA(SVR4及4.3+BSD)數(shù)據(jù)段的最大字節(jié)長(zhǎng)度。這是圖7.3中初始化數(shù)據(jù)、非初始化數(shù)據(jù)以及堆的總和。
              RLIMIT SIZE(SVR4及4.3+BSD)可以創(chuàng)建的一個(gè)文件的最大字節(jié)長(zhǎng)度。當(dāng)超過(guò)此軟限制時(shí),則向該進(jìn)程發(fā)送SIGFSZ信號(hào)。
              RLIMIT EMLOCK(4.3+BSD)鎖定在存儲(chǔ)器地址空間(尚末實(shí)現(xiàn))。
              RLIMIT OFILE(SVR4)每個(gè)進(jìn)程最多打開的文件數(shù)。更改此限制將影響到sysconf函數(shù)在參數(shù)-sc-OPEN-MAX中返回的值(2.5.4節(jié)

            )。見程序2.3。
              RLIMIT PROC(4.3+BSD)每個(gè)實(shí)際用戶ID所擁有的最大子進(jìn)程數(shù)。更改此限制將影響到sysconf函數(shù)在參數(shù) CHILDMAX中返回的

            值(2.5.4節(jié))。
              RLIMIT FILE(4.3+BSD)與SVR4的RLIMIT OFILE相同。
              RLIMIT SS(4.3+BSD)最大駐內(nèi)存集字節(jié)長(zhǎng)度(RSS)。如果物理存儲(chǔ)器供子應(yīng)求,則系統(tǒng)核將從進(jìn)程處取回超過(guò)RSS的部分。
              RLIMIT TACK(SVR4及4.3+BSD)棧的最大字節(jié)長(zhǎng)度。見圖7.3。
              RLIMIT MEM(SVR4)可映照地址空間的最大字節(jié)長(zhǎng)度。這影響到mmap函數(shù)(12.9節(jié))。

              資源限制影響到調(diào)用進(jìn)程并由其子進(jìn)程繼承。這就意味著為了影響一個(gè)用戶的所有后續(xù)進(jìn)程,需將資源限制設(shè)置構(gòu)造在shell

            之中。確實(shí),Bourne Shell和Kornshell具有內(nèi)部ulimit命令,CShell具有內(nèi)部limit命令。(umask和chdir也必須是shell內(nèi)部的)

              較早的BourmeShell,例如由貝克萊提供的一種,不支持ulimit命令。較新的KornShell的ulimit命令具有-H和-s選擇項(xiàng),以

            分別檢查和修改硬和軟的限制,但它們尚末編寫入文檔。

            ?

            ?簡(jiǎn)單的用例:

            #include<sys/time.h>
            #include<sys/resource.h>
            #include<unistd.h>
            int main()
            {
              struct rlimit limit;
             char p = '1';
             limit.rlim_cur = RLIM_INFINITY;
             limit.rlim_max = RLIM_INFINITY;
             if(setrlimit(RLIMIT_CORE, &limit))
             {
              printf("set limit failed/n");
             }

             printf("p = %s/n",p);
            }



            ---------------------------------------------------------------------------------------------------------------------------------------------

            對(duì)每個(gè)進(jìn)程都有一組資源限制,其中一些可以用getrlimit和setrlimit函數(shù)查詢和更改

            getrlimit和setrlimit:資源限制 (getrlimit and setrlimit: Resource Limits)

            這兩個(gè)系統(tǒng)函數(shù)是和resource limit相關(guān)的。你用過(guò)ulimit命令嗎?(反正我沒(méi)用過(guò))
            對(duì)于每個(gè)資源來(lái)說(shuō)有兩個(gè)limit:一個(gè)是hard limit,一個(gè)是soft limit,其中后者永遠(yuǎn)不能超過(guò)前者,并且只有擁有superuser權(quán)限的進(jìn)程可以更改前者。
            getrlimit和setrlimit的參數(shù)相同:第一個(gè)參數(shù)是資源的類型,第二個(gè)參數(shù)是rlimit結(jié)構(gòu)的指針,這個(gè)結(jié)構(gòu)里面就只有兩個(gè)成員:hard limit和soft limit
            幾個(gè)重要的資源類型
            RLIMIT_CPU:程序執(zhí)行的最大CPU時(shí)間,單位是秒。超過(guò)之后程序中止,中止的信號(hào)是SIGXCPU
            RLIMIT_DATA:程序執(zhí)行的最大內(nèi)存
            RLIMIT_NPROC:程序孵出的最大子進(jìn)程數(shù)量
            RLIMIT_NOFILE:程序打開的文件的最大數(shù)量


            --------------------
            如果你碰到類似的錯(cuò)誤提示
            ulimit: max user processes: cannot modify limit: 不允許的操作
            ulimit: open files: cannot modify limit: 不允許的操作

            為啥root用戶是可以的?普通用戶又會(huì)遇到這樣的問(wèn)題?
            看一下/etc/security/limits.conf大概就會(huì)明白。
            linux對(duì)用戶有默認(rèn)的ulimit限制,而這個(gè)文件可以配置用戶的硬配置和軟配置,硬配置是個(gè)上限。
            超出上限的修改就會(huì)出“不允許的操作”這樣的錯(cuò)誤。

            在limits.conf加上
            * soft noproc 10240
            * hard noproc 10240
            * soft nofile 10240
            * hard nofile 10240
            就是限制了任意用戶的最大線程數(shù)和文件數(shù)為10240。

            posted on 2012-03-19 08:57 C++技術(shù)中心 閱讀(4096) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux 操作
            久久精品亚洲日本波多野结衣| 91麻豆精品国产91久久久久久| 欧美一级久久久久久久大| 97精品国产97久久久久久免费| 国产精品一区二区久久精品无码| 精品久久综合1区2区3区激情| 久久久久亚洲av成人无码电影| 亚洲国产成人精品久久久国产成人一区二区三区综 | 欧美久久精品一级c片片| 精品无码久久久久久久久久| 伊人久久精品影院| 国产综合久久久久| 色99久久久久高潮综合影院| 亚洲精品美女久久久久99| 94久久国产乱子伦精品免费| 99蜜桃臀久久久欧美精品网站| 久久青青草原国产精品免费 | 久久福利资源国产精品999| 久久精品国产亚洲精品2020| 久久中文字幕无码专区| 精品国产乱码久久久久久郑州公司| 成人精品一区二区久久久| 久久精品国产亚洲av影院| 伊人久久大香线蕉综合5g| 99久久精品午夜一区二区| 久久九九兔免费精品6| 久久一区二区三区免费| 精品久久久久久国产91| 久久久久亚洲AV片无码下载蜜桃| 欧美激情精品久久久久久久九九九 | 欧美黑人激情性久久| 青春久久| 久久久噜噜噜久久| 欧美久久久久久午夜精品| 91久久精品国产成人久久| 麻豆精品久久精品色综合| 人妻精品久久久久中文字幕一冢本| 尹人香蕉久久99天天拍| 亚洲午夜福利精品久久| 中文字幕无码久久精品青草| 国内精品久久国产|