在CentOS操作系统中,ulimit
命令用于限制和控制用户进程可以使用的系统资源,这些资源包括CPU时间、内存大小、文件描述符数量、进程数等,通过合理配置ulimit
,可以有效防止单个进程或用户占用过多资源,从而保障系统的稳定性和安全性,以下是关于CentOS中ulimit
的详细解释和配置方法:
一、查看当前`ulimit`配置
要查看当前用户的ulimit
设置,可以使用以下命令:

- ulimit a
该命令将显示所有资源限制的当前值,包括软限制(soft limit)和硬限制(hard limit)。
- core file size (blocks, c) 0
- data seg size (kbytes, d) unlimited
- scheduling priority (e) 0
- file size (blocks, f) unlimited
- pending signals (i) 63397
- max locked memory (kbytes, l) 64
- max memory size (kbytes, m) unlimited
- open files (n) 1024
- pipe size (512 bytes, p) 8
- POSIX message queues (bytes, q) 819200
- realtime priority (r) 0
- stack size (kbytes, s) 8192
- cpu time (seconds, t) unlimited
- max user processes (u) 63397
- virtual memory (kbytes, v) unlimited
- file locks (x) unlimited
二、修改当前会话的`ulimit`
要修改当前会话的资源限制,可以在ulimit
命令后指定相应的参数,将最大文件描述符数改为65535:
- ulimit n 65535
这种修改仅对当前会话有效,退出会话后恢复默认值。
三、永久修改`ulimit`
要使ulimit
配置永久生效,需要修改相关配置文件,具体步骤如下:
1. 修改/etc/security/limits.conf
编辑/etc/security/limits.conf
文件,添加或修改如下内容:

- soft nofile 65535
- hard nofile 65535
- soft nproc 65535
- hard nproc 65535
上述配置将对系统中的所有用户生效,如果需要针对特定用户或用户组进行配置,可以将替换为相应的用户名或用户组名。
2. 修改/etc/pam.d/login
确保/etc/pam.d/login
文件中包含以下行:
- session required pam_limits.so
这行配置用于在用户登录时读取并应用/etc/security/limits.conf
中的资源限制。
3. 修改/etc/profile
为了在每次登录时自动应用ulimit
配置,可以在/etc/profile
文件中添加以下内容:
- ulimit n 65535
- ulimit u 65535
保存文件后,使用以下命令使修改立即生效:
- source /etc/profile
4. 重启系统或重新登录
完成上述配置后,可以通过重启系统或重新登录使修改生效。
四、Systemd服务的资源限制配置
在CentOS 7及更高版本中,Systemd替代了SysV init,因此还需要为Systemd服务单独配置资源限制。
1. 全局配置
编辑/etc/systemd/system.conf
文件,添加或修改以下内容:
- [Manager]
- DefaultLimitCORE=infinity
- DefaultLimitNOFILE=100000
- DefaultLimitNPROC=100000
2. 单个服务配置
对于特定的Systemd服务,可以在服务的单元文件中添加资源限制,对于apache服务,可以创建或编辑/etc/systemd/system/httpd.service.d/override.conf
文件,添加以下内容:
- [Service]
- LimitNOFILE=20000
- LimitNPROC=20000
然后重新加载Systemd配置并重启服务:
- systemctl daemonreload
- systemctl restart httpd
五、常见问题与解决方案
1. 如何更改硬限制?
硬限制只能由超级用户(root)提高,普通用户无法增加硬限制,要增加硬限制,可以使用以下命令:
- sudo ulimit Hn 4096
2.ulimit
配置不生效怎么办?
如果修改了ulimit
配置但未生效,可以尝试以下步骤:
确保修改的是当前shell的配置文件(如~/.bashrc
或~/.bash_profile
)。
确保修改了/etc/security/limits.conf
和/etc/pam.d/login
。
确保重新启动系统或重新登录以应用配置。
确保没有其他配置文件覆盖了您的设置。
通过合理配置CentOS中的ulimit
,可以有效管理系统资源,防止单个进程或用户过度消耗资源,从而保证系统的稳定性和性能。