ulimit限制 新系统_系统限制ulimit学习
ulimit命令
ulimit用于控制系統內執行資源的限制,如coredump文件大小、文件的最大值、能打開的最大文件數等。
執行ulimit -a可以看到當前的資源限制情況。
[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0 #core文件的最大值為0,即不生成core dump。
data seg size (kbytes, -d) unlimited #進程的數據段可以任意大。
scheduling priority (-e) 0
file size (blocks, -f) unlimited #文件可以任意大。
pending signals (-i) 98304 #最多有98304個待處理的信號。
max locked memory (kbytes, -l) 32 #一個任務鎖住的物理內存的最大值為32KB。
max memory size (kbytes, -m) unlimited #一個任務的常駐物理內存的最大值。
open files (-n) 1024 #一個任務最多可以同時打開1024的文件。
pipe size (512 bytes, -p) 8 #管道的最大空間為4096字節。
POSIX message queues (bytes, -q) 819200 #POSIX的消息隊列的最大值為819200字節。
real-time priority (-r) 0
stack size (kbytes, -s) 10240 #進程的棧的最大值為10240字節。
cpu time (seconds, -t) unlimited #進程使用的CPU時間。
max user processes (-u) 98304 #當前用戶同時打開的進程(包括線程)的最大個數為98304。
virtual memory (kbytes, -v) unlimited #沒有限制進程的最大地址空間。
file locks (-x) unlimited #所能鎖住的文件的最大個數沒有限制。
設置系統限制的方法
一、在initscript下設置(使用sysvinit)
sysvinit介紹
? sysvinit是一種init系統,源于system V的Unix系統,負責linux系統的初始化,一直以來被大部分Linux系統所使用。
/etc/inittab
sysvinit會讀取/etc/inittab文件內的內容,獲取以下幾種信息:
系統需要進入默認的 runlevel
捕獲組合鍵的定義
定義電源 fail/restore 腳本
啟動 getty 和虛擬控制臺
/etc/initscript
當系統存在initscript文件時,init會使用該文件來運行inittab內的命令。因此可以在該文件內設置ulimit,通常用來為全部進程設置ulimit及umask的值。
以下是init使用initscript執行inittab內的命令。
/bin/sh /etc/initscript
以下是一個設置了ulimit的initscript例子:
# Set umask to safe level, and enable core dumps.
umask 022
ulimit -c 2097151
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
# Increase the hard file descriptor limit for all processes
# to 8192. The soft limit is still 1024, but any unprivileged
# process can increase its soft limit up to the hard limit
# with "ulimit -Sn xxx" (needs a 2.2.13 or later Linux kernel).
ulimit -Hn 8192
# Execute the program.
eval exec "$4"
二、在/etc/security/limits.conf設置
將需要限制的資源寫進/etc/security/limits.conf,語法格式為:
root hard core ulimited
limits.conf是pam_limits.so的配置文件,必須在pam.d目錄下的對應程序的配置文件內reqiure這個庫文件才可以生效。
#在登錄時限制
vi /etc/pam.d/login
# Sets up user limits according to /etc/security/limits.conf
# (Replaces the use of /etc/limits in old login)
session required pam_limits.so
要在用戶登錄進行限制,最后還需要在sshd的配置文件內配置使用PAM:
vi /etc/ssh/sshd_config
usePAM yes
三、在/etc/profile 或者用戶bashrc下設置
針對不同的用戶進行不同的限制,也可以將ulimit指令寫入bashrc文件內。
# vi /root/.bashrc
ulimit -c unlimited
故障排查
當發現ulimit沒有生效,可以從以上三個地方檢查是否有配置錯誤。
initscript是sysvinit特有的文件,如果使用systemd或者upstart,通過initscript配置將會失效。
參考:man limits.conf(5) man initscript(5) man inittab(5) man pam.conf
總結
以上是生活随笔為你收集整理的ulimit限制 新系统_系统限制ulimit学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# mongodb or查询_C# 查
- 下一篇: 扭矩大好还是马力大好_发动机的马力重要还