# 错误--没有子进程

linux fork: retry: 没有子进程、资源暂时不可用问题解决

普通用户执行命令时,有时候会报如下错误

-bash: fork: retry: 没有子进程
-bash: fork: retry: 没有子进程
-bash: fork: retry: 没有子进程
-bash: fork: retry: 资源暂时不可用

是因为该用户的线程满了导致的。通过ulimit -a命令查看可以看到该用户的max user processes值是1024或者4096。对比查看root用户的,可以看到是unlimited。

知道问题出在哪儿,就好解决了。 解决方法1、直接使用ulimit -u命令修改即可。

[sgs@localhost ~]$ ulimit -u 10000
[sgs@localhost ~]$ ulimit -u
10000

解决方法2、通过修改配置文件中该参数的值即可。

centos7.5中配置文件为/etc/security/limits.d/20-nproc.conf。 网上的参考资料中centos6为/etc/security/limits.d/90-nproc.conf这个未验证。

[sgs@localhost ~]$ sudo vi /etc/security/limits.d/20-nproc.conf

# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     4096
root       soft    nproc     unlimited

修改4096为10000(所需的值)保存即可。注意需要用户重新登录才能生效,这一步网上许多关于修改配置文件的解决方法后都没提,要注意。

更新时间: 2023年12月19日星期二晚上7点34分