小技巧: 限制单个用户可用虚拟内存和进程数
时间:2007-08-23 来源:yudi2006
小技巧: 限制单个用户可用虚拟内存和进程数
赵珂, 2007-08-07
实例脚本
脚本名: ulimit.sh
if [ $UID -ge 500 ]
then
ulimit -v 100000
ulimit -m 100000
ulimit -u 200
fi
注: ulimit -m和-v参数的单位为Kbytes. uid为500及500以上的用户都将自动修改ulimit数值(then后面的ulimit指令).
概念注释
虚拟内存(virtual memory): ulimit -v 限制单个进程可用的虚拟内存大小, 其中虚拟内存包括所有的内存类型, 包括堆栈, 内存映射文件. ulimit -v 100000限制了单个进程最多能够使用100M内存, 超出该限制终端将会收到一个内存不足的错误.
最大驻留集大小(maximum resident set size): ulimit -m 100000限制单个进程实际能驻留在RAM中的代码和数据大小不能超过100M.
最大用户进程数(max user processes): ulimit -u 200限制当前用户同时不能超过拥有200个进程数.
实例操作一 进程fork炸弹
运行shell命令行, 运行下面指令:
[zhaoke@islab ~]$ ulimit -a
max memory size (kbytes, -m) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
…
[1] 29161
过几秒钟后系统停止任何服务.
(需强行reset重启系统)
实例操作二 用ulimit.sh限制进程fork炸弹
1. 在/etc/profile.d目录下创建ulimit.sh脚本, 内容如上.
2. 打开shell终端, 然后再运行实例操作一中的第二步
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
使用Ctrl-C终止fork炸弹进程.
关键字: linux, ulimit