在CentOS系统中,ulimit
命令用于设置或获取用户进程的资源限制。通过ulimit
,你可以实现对系统资源的隔离与限制,以防止某个进程消耗过多资源,影响其他进程或系统的稳定性。以下是一些常见的ulimit
参数及其用途:
ulimit
参数core file size (core 文件大小)
ulimit -c unlimited
:允许生成核心转储文件。ulimit -c 0
:禁止生成核心转储文件。data segment size (数据段大小)
ulimit -d unlimited
:允许数据段大小无限制。ulimit -d 100M
:限制数据段大小为100MB。file size (文件大小)
ulimit -f unlimited
:允许文件大小无限制。ulimit -f 100M
:限制文件大小为100MB。max locked memory (最大锁定内存)
ulimit -l unlimited
:允许锁定内存无限制。ulimit -l 100M
:限制锁定内存为100MB。max memory size (最大内存大小)
ulimit -m unlimited
:允许内存使用无限制。ulimit -m 100M
:限制内存使用为100MB。open files (打开文件数)
ulimit -n unlimited
:允许打开文件数无限制。ulimit -n 1024
:限制打开文件数为1024。pipe size (管道大小)
ulimit -p unlimited
:允许管道大小无限制。ulimit -p 1024
:限制管道大小为1024KB。stack size (栈大小)
ulimit -s unlimited
:允许栈大小无限制。ulimit -s 10M
:限制栈大小为10MB。cpu time (CPU时间)
ulimit -t unlimited
:允许CPU时间无限制。ulimit -t 3600
:限制CPU时间为3600秒。max user processes (最大用户进程数)
ulimit -u unlimited
:允许用户进程数无限制。ulimit -u 1024
:限制用户进程数为1024。ulimit
你可以在用户的shell配置文件(如.bashrc
或.bash_profile
)中设置ulimit
,以便每次登录时自动应用这些限制。例如:
# 打开.bashrc文件
nano ~/.bashrc
# 添加以下行
ulimit -n 1024
ulimit -m 100M
ulimit -u 1024
# 保存并退出
source ~/.bashrc
除了用户级的ulimit
设置,你还可以通过修改系统配置文件来设置全局资源限制。例如,编辑/etc/security/limits.conf
文件:
# 打开limits.conf文件
nano /etc/security/limits.conf
# 添加以下行
* soft nofile 1024
* hard nofile 2048
@student soft nproc 1024
@student hard nproc 2048
# 保存并退出
cgroups
进行更细粒度的资源控制对于更复杂的资源隔离与限制需求,可以使用cgroups
(控制组)。cgroups
允许你对一组进程的资源使用进行限制、监控和分配。以下是一个简单的示例:
安装cgroup-tools
sudo yum install cgroup-tools
创建一个新的cgroup
sudo cgcreate -g memory:/mygroup
设置内存限制
echo "100M" | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
将进程添加到cgroup
echo $$ | sudo tee /sys/fs/cgroup/memory/mygroup/tasks
通过这些步骤,你可以实现对进程的资源隔离与限制,确保系统资源的合理分配和使用。