學習ulimit命令的用法。
功能說明:控制shell程序的資源。
語 法:ulimit [-aHS][-c
補充說明:ulimit為shell內建指令,可用來控制shell執行程序的資源。
參 數:
代碼如下:
-a 顯示目前資源限制的設定。
-c
-d <數據節區大小> 程序數據節區的最大值,單位為KB。
-f <文件大小> shell所能建立的最大文件,單位為區塊。
-H 設定資源的硬性限制,也就是管理員所設下的限制。
-m <內存大小> 指定可使用內存的上限,單位為KB。
-n <文件數目> 指定同一時間最多可開啟的文件數。
-p <緩沖區大小> 指定管道緩沖區的大小,單位512字節。
-s <堆疊大小> 指定堆疊的上限,單位為KB。
-S 設定資源的彈性限制。
-t
-u <程序數目> 用戶最多可開啟的程序數目。
-v <虛擬內存大小> 指定可使用的虛擬內存上限,單位為KB。
ulimit -a 用來顯示當前的各種用戶進程限制。
Linux對於每個用戶,系統限制其最大進程數。為提高性能,可以根據設備資源情況,設置各linux 用戶的最大進程數。
例如,把某linux用戶的最大進程數設為10000個:
ulimit -u 10000
對於需要做許多 socket 連接並使它們處於打開狀態的 Java 應用程序而言,
最好通過使用 ulimit -n xx 修改每個進程可打開的文件數,缺省值是 1024。
ulimit -n 4096 將每個進程可以打開的文件數目加大到4096,缺省為1024
其他建議設置成無限制(unlimited)的一些重要設置是:
復制代碼
代碼如下:
數據段長度:ulimit -d unlimited
最大內存大小:ulimit -m unlimited
堆棧大小:ulimit -s unlimited
CPU 時間:ulimit -t unlimited
虛擬內存:ulimit -v unlimited
有時服務器需要調整ulimit的stack size 參數調整為unlimited 無限,使用ulimit -s unlimited時只能在當時的shell見效,重開一個shell則失效。
解決方法:
在/etc/profile 的最後面添加ulimit -s unlimited。
然後:
# source /etc/profile
使修改即時生效。
可能的問題:
如果碰到類似的錯誤提示
ulimit: max user processes: cannot modify limit: 不允許的操作
ulimit: open files: cannot modify limit: 不允許的操作
以上操作對root用戶是不會提示這樣的限制信息的,只對普通用戶有影響,原因何在?
大家可以去研究下文件:/etc/security/limits.conf。
說明:
linux對用戶有默認的ulimit限制,而這個文件可以配置用戶的硬配置和軟配置,硬配置是個上限。
超出上限的修改就會出“不允許的操作”這樣的錯誤。
可以在limits.conf文件最後添加相關內容,如下圖:
即限制任意用戶的最大線程數和文件數為10240。