linux ulimit設定
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
-u number:設定使用者最大程式數 (max user processes)
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”,儲存重啟系統就可以了
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使修改檔案生效。
PS:如果你碰到類似的錯誤提示
ulimit: max user processes: cannot modify limit: 不允許的操作
ulimit: open files: cannot modify limit: 不允許的操作
為啥root使用者是可以的?普通使用者又會遇到這樣的問題?
看一下/etc/security/limits.conf大概就會明白。
linux對使用者有預設的ulimit限制,而這個檔案可以配置使用者的硬配置和軟配置,硬配置是個上限。
超出上限的修改就會出“不允許的操作”這樣的錯誤。
在limits.conf加上
* soft noproc 10240
* hard noproc 10240
* soft nofile 10240
* hard nofile 10240
就是限制了任意使用者的最大執行緒數和檔案數為10240。
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 命令登入 shell 會話期間。
永久地,透過將一個相應的 ulimit 語句新增到由登入 shell 讀取的檔案中, 即特定於 shell 的使用者資原始檔,如:
1)、解除 Linux 系統的最大程式數和最大檔案開啟數限制:
vi /etc/security/limits.conf
# 新增如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
說明:* 代表針對所有使用者
noproc 是代表最大程式數
nofile 是代表最大檔案開啟數
2)、讓 SSH 接受 Login 程式的登入,方便在 ssh 客戶端檢視 ulimit -a 資源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改為 yes,並把 # 註釋去掉
b、重啟 sshd 服務:
/etc/init.d/sshd restart
3)、修改所有 linux 使用者的環境變數檔案:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
/**************************************
有時候在程式裡面需要開啟多個檔案,進行分析,系統一般預設數量是1024,(用ulimit -a可以看到)對於正常使用是夠了,但是對於程式來講,就太少了。
修改2個檔案。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2./etc/pam.d/login
session required /lib/security/pam_limits.so
**********
另外確保/etc/pam.d/system-auth檔案有下面內容
session required /lib/security/$ISA/pam_limits.so
這一行確保系統會執行這個限制。
***********
3.一般使用者的.bash_profile
#ulimit -n 1024
重新登陸ok
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22418990/viewspace-754455/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 指令篇:系統設定--ulimitLinuxMIT
- Linux ulimit使用LinuxMIT
- linux----ulimit 限制LinuxMIT
- 【LINUX】linux ulimit調優LinuxMIT
- linux_ulimit_open filerLinuxMIT
- 如何在 Linux 伺服器上設定 ulimit 和檔案描述符數限制Linux伺服器MIT
- linux/unix ulimit命令詳解LinuxMIT
- Linux下ulimit、find命令使用者LinuxMIT
- ulimit詳解MIT
- 如何使用 ulimitMIT
- Linux下ulimit命令的詳細使用介紹LinuxMIT
- 在Linux中,umask 和 ulimit有什麼區別?LinuxMIT
- linux 設定 jdkLinuxJDK
- Linux iSCSI 設定Linux
- Linux設定FQDNLinux
- linux 設定代理Linux
- ulimit操作及使用MIT
- [效能]ulimit與systemtapMIT
- linux設定埠轉發(一鍵設定)Linux
- 【Linux】linux時區設定Linux
- linux定時任務的設定Linux
- Linux/Window安全設定Linux
- linux 網路設定Linux
- LINUX安全設定(部分)Linux
- linux 時區設定Linux
- Linux設定固定IPLinux
- 設定linux ip命令Linux
- Linux網路設定Linux
- Ubuntu 永久修改 ulimit -nUbuntuMIT
- 【CentOS7】ulimit 使用CentOSMIT
- suse linux 10_su - oracle報ulimit錯誤-cannot modify limit:LinuxOracleMIT
- 【轉】linux定時任務的設定Linux
- linux定時任務的設定2Linux
- linux的date命令設定Linux
- Linux-別名設定Linux
- Linux設定防火牆iptablesLinux防火牆
- Linux設定密碼策略Linux密碼
- linux vmware上網設定Linux