
在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,可以有效管理系统资源,防止单个进程或用户过度消耗资源,从而保证系统的稳定性和性能。
