萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> linux ulimit命令用法解析

linux ulimit命令用法解析

   學習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。

copyright © 萬盛學電腦網 all rights reserved