無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          ulimit命令詳解

          Posted on 2009-11-29 11:57 Gavin.lee 閱讀(354) 評論(0)  編輯  收藏 所屬分類: Linux command

           

          原文地址:http://www.diybl.com/course/6_system/linux/linuxjq/20081117/151630.html

          1,說明:
          ulimit用于shell啟動進程所占用的資源.
          2,類別:
          shell內建命令
          3,語法格式:
          ulimit [-acdfHlmnpsStvw] [size]
          4,參數介紹:
          -H 設置硬件資源限制.
          -S 設置軟件資源限制.
          -a 顯示當前所有的資源限制.
          -c size:設置core文件的最大值.單位:blocks
          -d size:設置數據段的最大值.單位:kbytes
          -f size:設置創建文件的最大值.單位:blocks
          -l size:設置在內存中鎖定進程的最大值.單位:kbytes
          -m size:設置可以使用的常駐內存的最大值.單位:kbytes
          -n size:設置內核可以同時打開的文件描述符的最大值.單位:n
          -p size:設置管道緩沖區的最大值.單位:kbytes
          -s size:設置堆棧的最大值.單位:kbytes
          -t size:設置CPU使用時間的最大上限.單位:seconds
          -v size:設置虛擬內存的最大值.單位:kbytes 5,簡單實例:
          5.舉例
          在Linux下寫程序的時候,如果程序比較大,經常會遇到“段錯誤”(segmentation fault)這樣的問題,這主要就是由于Linux系統初始的堆棧大小(stack size)太小的緣故,一般為10M。我一般把stack size設置成256M,這樣就沒有段錯誤了!命令為:
          ulimit   -s 262140
          如果要系統自動記住這個配置,就編輯/etc/profile文件,在 “ulimit -S -c 0 > /dev/null 2>&1”行下,添加“ulimit   -s 262140”,保存重啟系統就可以了!
          1]在RH8的環境文件/etc/profile中,我們可以看到系統是如何配置ulimit的:
          #grep ulimit /etc/profile
          ulimit -S -c 0 > /dev/null 2>&1
          這條語句設置了對軟件資源和對core文件大小的設置
          2]如果我們想要對由shell創建的文件大小作些限制,如:
          #ll h
          -rw-r--r-- 1 lee lee 150062 7月 22 02:39 h
          #ulimit -f 100 #設置創建文件的最大塊(一塊=512字節)
          #cat h>newh
          File size limit exceeded
          #ll newh
          -rw-r--r-- 1 lee lee 51200 11月 8 11:47 newh
          文件h的大小是150062字節,而我們設定的創建文件的大小是512字節x100塊=51200字節
          當然系統就會根據你的設置生成了51200字節的newh文件.
          3]可以像實例1]一樣,把你要設置的ulimit放在/etc/profile這個環境文件中.
          用途
          設置或報告用戶資源極限。
          語法
          ulimit [ -H ] [ -S ] [ -a ] [ -c ] [ -d ] [ -f ] [ -m ] [ -n ] [ -s ] [ -t ] [ Limit ]
          描述
          ulimit 命令設置或報告用戶進程資源極限,如 /etc/security/limits 文件所定義。文件包含以下缺省值極限:
          fsize = 2097151
          core = 2097151
          cpu = -1
          data = 262144
          rss = 65536
          stack = 65536
          nofiles = 2000
          當新用戶添加到系統中時,這些值被作為缺省值使用。當向系統中添加用戶時,以上值通過 mkuser 命令設置,或通過 chuser 命令更改。
          極限分為軟性或硬性。通過 ulimit 命令,用戶可將軟極限更改到硬極限的最大設置值。要更改資源硬極限,必須擁有 root 用戶權限。
          很多系統不包括以上一種或數種極限。 特定資源的極限在指定 Limit 參數時設定。Limit 參數的值可以是每個資源中指定單元中的數字,或者為值 unlimited。要將特定的 ulimit 設置為 unlimited,可使用詞 unlimited。
              注:在 /etc/security/limits 文件中設置缺省極限就是設置了系統寬度極限, 而不僅僅是創建用戶時用戶所需的極限。
          省略 Limit 參數時,將會打印出當前資源極限。除非用戶指定 -H 標志,否則打印出軟極限。當用戶指定一個以上資源時,極限名稱和單元在值之前打印。如果未給予選項,則假定帶有了 -f 標志。
          由于 ulimit 命令影響當前 shell 環境,所以它將作為 shell 常規內置命令提供。如果在獨立的命令執行環境中調用該命令,則不影響調用者環境的文件大小極限。以下示例中正是這種情況:
          nohup ulimit -f 10000
          env ulimit 10000
          一旦通過進程減少了硬極限,若無 root 特權則無法增加,即使返回到原值也不可能。
          關于用戶和系統資源極限的更多信息,請參見 AIX 5L Version 5.3 Technical Reference: Base Operating System and Extensions Volume 1 中的 getrlimit、setrlimit 或 vlimit 子例程。
          標志
          -a     列出所有當前資源極限。
          -c     以 512 字節塊為單位,指定核心轉儲的大小。
          -d     以 K 字節為單位指定數據區域的大小。
          -f     使用 Limit 參數時設定文件大小極限(以塊計),或者在未指定參數時報告文件大小極限。缺省值為 -f 標志。
          -H     指定設置某個給定資源的硬極限。如果用戶擁有 root 用戶權限,可以增大硬極限。任何用戶均可減少硬極限。
          -m     以 K 字節為單位指定物理存儲器的大小。
          -n     指定一個進程可以擁有的文件描述符的數量的極限。
          -s     以 K 字節為單位指定堆棧的大小。
          -S     指定為給定的資源設置軟極限。軟極限可增大到硬極限的值。如果 -H 和 -S 標志均未指定,極限適用于以上二者。
          -t     指定每個進程所使用的秒數。
          退出狀態
          返回以下退出值:
          0     成功完成。
          >0     拒絕對更高的極限的請求,或發生錯誤。
          示例
          要將文件大小極限設置為 51,200 字節,輸入:
          ulimit -f 100
          文章出處:http://www.diybl.com/course/6_system/linux/linuxjq/20081117/151630.html
          主站蜘蛛池模板: 黄大仙区| 西丰县| 文昌市| 怀柔区| 留坝县| 东明县| 体育| 福清市| 理塘县| 娱乐| 阳原县| 嵊泗县| 安康市| 台南市| 中宁县| 娱乐| 卢湾区| 栾川县| 赣州市| 克山县| 敦化市| 上林县| 浦江县| 巴彦淖尔市| 大新县| 洛宁县| 云林县| 衡山县| 怀远县| 珠海市| 闵行区| 五华县| 天气| 体育| 太仓市| 德化县| 宁南县| 新民市| 包头市| 永丰县| 宝清县|