您的位置:首页 > 运维架构 > Shell

关于su时出现“-bash:fork:Resource temporarily unavailable”

2013-06-24 17:09 169 查看
今天用root用户su切换www用户时,一直“-bash:fork:Resource temporarily unavailable”,知道是由于资源不足造成的,

1、首先检查硬盘、内存空间都没问题

2、通过ulimit -a,得到结果

<span style="font-size:14px;">core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
max nice                        (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 71679
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
max rt priority                 (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 2047
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
</span>


3、修改/etc/security/limits.conf

<span style="font-size:14px;">*              soft    nproc   2047
*              hard    nproc   16384
</span>


limits.conf的格式如下:

username|@groupname type resource limit

username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。

type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的最大值不能超过hard的值。用 – 就表明同时设置了 soft 和 hard 的值。

resource:

core – 限制内核文件的大小

date – 最大数据大小

fsize – 最大文件大小

memlock – 最大锁定内存地址空间

nofile – 打开文件的最大数目

rss – 最大持久设置大小

stack – 最大栈大小

cpu – 以分钟为单位的最多 CPU 时间

noproc – 进程的最大数目

as – 地址空间限制

maxlogins – 此用户允许登录的最大数目

要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:

session required /lib/security/pam_limits.so

4、或者使用修改/etc/profile文件

ulimit [-acdfHlmnpsStvw] [size]

参数详解:

-H 设置硬件资源限制.

-S 设置软件资源限制.

-a 显示当前所有的资源限制.

-c size:设置core文件的最大值.单位:blocks

-d size:设置数据段的最大值.单位:kbytes

-f size:设置创建文件的最大值.单位:blocks

-l size:设置在内存中锁定进程的最大值.单位:kbytes

-m size:设置可以使用的常驻内存的最大值.单位:kbytes

-n size:设置内核可以同时打开的文件描述符的最大值.单位:n

-p size:设置管道缓冲区的最大值.单位:kbytes

-s size:设置堆栈的最大值.单位:kbytes

-t size:设置CPU使用时间的最大上限.单位:seconds

-v size:设置虚拟内存的最大值.单位:kbytes

在/etc/profile文件末尾加上如ulimit -f 1000,这样每个会话登陆时都会生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: