默认的ulimit值在哪里设置? (linux,centos)

我有两个几乎相同规格的CentOS 5服务器。 当我login并做ulimit -u ,在一台机器上我得到unlimited ,另一个我得到77824

当我运行一个cron时:

 * * * * * ulimit -u > ulimit.txt 

我得到相同的结果( unlimited77824 )。

我试图确定这些设置在哪里,以便我可以改变它们。 他们没有设置在我的任何configuration文件( .bashrc/etc/profile等)。 这些不会影响cron),也不会在/etc/security/limits.conf (这是空的)。

我已经search谷歌,甚至已经做了grep -Ir 77824 / ,但迄今为止没有出现。 我不明白这些机器如何预设不同的限制。

其实我并不是想知道这些机器,而是一个不同的(CentOS 6)机器,它的极限是1024 ,而这个机器太小了。 我需要运行具有更高限制的cron作业,而且我知道如何设置cron作业本身的唯一方法。 没关系,但是我宁愿把它设置在系统范围内,所以这不是一件好事。

感谢您的帮助。 这似乎应该很容易(不)。


编辑 – 解决

好的,我明白了这一点。 这似乎是一个问题,无论是与CentOS 6或可能是我的机器configuration。 在CentOS 5configuration上,我可以在/etc/security/limits.conf设置:

 * - nproc unlimited 

这将有效更新帐户和cron限制。 但是,这在我的CentOS 6框中不起作用。 相反,我必须这样做:

 myname1 - nproc unlimited myname2 - nproc unlimited ... 

事情按预期工作。 也许UID规范工作,但通配符(*)绝对不会在这里。 奇怪的是,通配符在nofile限制下工作。

我仍然很想知道默认值是从哪里来的,因为默认情况下,这个文件是空的,我不明白为什么两个CentOS盒子有不同的默认值,它们有相同的硬件,来自同一个提供者。

这些“默认”限制适用于:

  • Linux内核启动时 (到init进程),
  • inheritance ,从父进程的限制(在fork(2)时间),
  • PAM 打开用户会话时 (可以replace内核/inheritance的值),
  • 进程本身(可以replacePAM和内核/inheritance的值,请参阅setrlimit(2) )。

普通用户的stream程不能提高硬性限制。

Linux内核

在引导时,Linux为init进程设置了默认限制,然后所有其他(subprocess)进程inheritance它们。 要查看这些限制: cat /proc/1/limits

例如, 文件描述符ulimit -n )的最大内核默认值是1024/1024(soft,hard),在Linux 2.6.39中已经提升到1024/4096。

您正在讨论的默认最大进程数 限制为大约:

 Total RAM in kB / 128 

对于x86体系结构(至less),但分发有时会更改默认内核值,因此请检查内核源代码是否为kernel/fork.cfork_init() 。 “进程数”限制在那里被称为RLIMIT_NPROC。

PAM

通常,为了确保用户在login时进行身份validation,PAM与一些模块一起使用(请参阅/etc/pam.d/login )。

在Debian上,负责设置限制的PAM模块在这里: /lib/security/pam_limits.so

这个库将从/etc/security/limits.conf/etc/security/limits.d/*.conf读取它的configuration,但即使这些文件是空的, pam_limits.so也可能使用硬编码的值 ,你可以在源代码。

例如,在Debian上,库已经被修补,所以默认情况下, 最大进程数nproc )是无限的, 最大文件数nofile )是1024/1024:

  case RLIMIT_NOFILE: pl->limits[i].limit.rlim_cur = 1024; pl->limits[i].limit.rlim_max = 1024; 

所以, 检查你的CentOS的PAM模块源代码 (寻找RLIMIT_NPROC)。

但是,请注意,许多进程不会经过PAM(通常,如果它们不是由login用户启动的,如daemons和cron作业)。

在RHEL6(CentOS6)上, “max user processes”默认设置为1024。
您可以在文件中更改此值:

 /etc/security/limits.d/90-nproc.conf 

https://bugzilla.redhat.com/show_bug.cgi?id=432903如果你想抱怨:)

当你检查限制,你是否使用root用户这样做?

limits.conf页:

注:组和通配符限制不适用于root用户。 要为root用户设置限制,此字段必须包含文字用户名root。

在这种情况下使用明确的用户名可以解决问题。

核心/ fork.c

 max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE); 

在64位线程大小是8192

  grep -i total /proc/meminfo MemTotal: 8069352 kB 

现在我得到了除以4的总分

  echo $((8069352/4)) 2017338 

现在我得到了页数

  echo $((8 * 8192 / 4096) 16 

最终的结果是

 echo $((2017338/16)) 126083 

这样你就得到了thread-max参数,默认的用户进程限制是一半

 init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2; init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2; 

从根目录ulimit

 ulimit -u 62932 echo $((62932*2)) 125864 #we are near 

它似乎是/etc/security/limits.conf

http://ss64.com/bash/limits.conf.html

在/etc/security/limits.conf中configuration“noproc”的configuration不能正常工作。

还有一个文件覆盖你的configuration/etc/security/limits.d/90-nproc.conf。

 *软nproc 1024
根软nproc无限

这里的*configuration将覆盖你在以前的configuration文件中设置的任何东西 所以理想情况下,你在这个文件中configuration你的设置。

关于这方面的信息在互联网上是可怕的,inheritance人是我为debian linux制作的limits.conf文件,显示了所有可能的选项和最大的“安全”限制,相应地调整。

这些是你可以设置的最高值,有些东西是哈希出来的,激活那些导致你错误,无法login到控制台,修改注释掉的选项,风险自负,但你不应该需要(默认是无限的大多数)

我希望这对某人有用,因为我无法在任何地方find这个信息,对这个文件进行4个小时的研究。

 ==== FILE START ===== # /etc/security/limits.conf # #Each line describes a limit for a user in the form: # #<domain> <type> <item> <value> # #Where: #<domain> can be: #- a user name #- a group name, with @group syntax #- the wildcard *, for default entry #- the wildcard %, can be also used with %group syntax, # for maxlogin limit #- NOTE: group and wildcard limits are not applied to root. # To apply a limit to the root user, <domain> must be # the literal username root. # #<type> can have the two values: #- "soft" for enforcing the soft limits #- "hard" for enforcing hard limits # #<item> can be one of the following: #- core - limits the core file size (KB) #- data - max data size (KB) #- fsize - maximum filesize (KB) #- memlock - max locked-in-memory address space (KB) #- nofile - max number of open files #- rss - max resident set size (KB) #- stack - max stack size (KB) #- cpu - max CPU time (MIN) #- nproc - max number of processes #- as - address space limit (KB) #- maxlogins - max number of logins for this user #- maxsyslogins - max number of logins on the system #- priority - the priority to run user process with #- locks - max number of file locks the user can hold #- sigpending - max number of pending signals #- msgqueue - max memory used by POSIX message queues (bytes) #- nice - max nice priority allowed to raise to values: [-20, 19] #- rtprio - max realtime priority #- chroot - change root to directory (Debian-specific) # #<domain> <type> <item> <value> # #* soft core 0 #root hard core 100000 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #ftp - chroot /ftp #@student - maxlogins 4 # -- Defaults: #(core) core file size (blocks, -c) 0 (ulimit -Hc or -Sc) #(data) data seg size (bytes, -d) unlimited #(priority) scheduling priority (-e) 0 #(fsize) file size (blocks, -f) unlimited #(sigpending) pending signals (-i) 378197 #(memlock) max locked memory (kbytes, -l) 64 # max memory size (kbytes, -m) unlimited #(nofile) open files (-n) 65536 # pipe size (512 bytes, -p) 8 #(msgqueue) POSIX message queues (bytes, -q) 819200 #(rtprio) real-time priority (-r) 0 #(stack) stack size (kbytes, -s) 8192 #(cpu) cpu time (seconds, -t) unlimited #(nproc) max user processes (-u) 378197 # virtual memory (kbytes, -v) unlimited #(locks) file locks (-x) unlimited # -- root Limits: root - core -1 root - data -1 root - fsize -1 root - memlock -1 root - nofile 999999 root - stack -1 root - cpu -1 root - nproc -1 root - priority 0 root - locks -1 root - sigpending -1 root - msgqueue -1 root - rtprio -1 root - maxlogins -1 root - maxsyslogins -1 #root - rss -1 #root - as -1 #root - nice 0 #root - chroot -1 #All Users: # -- Hard Limits * hard core -1 * hard data -1 * hard fsize -1 * hard memlock -1 * hard nofile 999999 * hard stack -1 * hard cpu -1 * hard nproc -1 * hard priority 0 * hard locks -1 * hard sigpending -1 * hard msgqueue -1 * hard rtprio -1 * hard maxlogins -1 * hard maxsyslogins -1 #* hard rss -1 #* hard as -1 #* hard nice 0 #* hard chroot -1 # -- Soft Limits * soft core -1 * soft data -1 * soft fsize -1 * soft memlock -1 * soft nofile 999999 * soft stack -1 * soft cpu -1 * soft nproc -1 * soft priority 0 * soft locks -1 * soft sigpending -1 * soft msgqueue -1 * soft maxlogins -1 * soft maxsyslogins -1 * soft rtprio -1 #* soft rss -1 #* soft as -1 #* soft nice 0 #* soft chroot -1 #randomuser: # -- Soft Limits randomuser soft core -1 randomuser soft data -1 randomuser soft fsize -1 randomuser soft memlock -1 randomuser soft nofile 999999 randomuser soft stack -1 randomuser soft cpu -1 randomuser soft nproc -1 randomuser soft priority 0 randomuser soft locks -1 randomuser soft sigpending -1 randomuser soft msgqueue -1 randomuser soft maxlogins -1 randomuser soft maxsyslogins -1 randomuser soft rtprio -1 #randomuser soft rss -1 #randomuser soft as -1 #randomuser soft nice 0 #randomuser soft chroot -1 # End of file