解决-bash: fork: retry: Resource temporarily unavailable错误
登陆不了服务器
The server refused to start a shell.
登陆服务器后执行ls命令报错:
1 2 |
$ ls - bash : fork : retry : Resource temporarily unavailable |
上面这段错误提示的本质是Linux操作系统无法创建更多进程,导致出错。
因此要解决这个问题需要修改Linux允许创建更多的进程。
修改Linux最大进程数
我们可以通过ulimit -a来查看当前Linux系统的一些系统参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ ulimit - a core file size ( blocks , - c ) 0 data seg size ( kbytes , - d ) unlimited scheduling priority ( - e ) 0 file size ( blocks , - f ) unlimited pending signals ( - i ) 62357 max locked memory ( kbytes , - l ) 64 max memory size ( kbytes , - m ) unlimited open files ( - n ) 65536 pipe size ( 512 bytes , - p ) 8 POSIX message queues ( bytes , - q ) 819200 real - time priority ( - r ) 0 stack size ( kbytes , - s ) 10240 cpu time ( seconds , - t ) unlimited max user processes ( - u ) 1024 virtual memory ( kbytes , - v ) unlimited file locks ( - x ) unlimited |
在上面这些参数中,通常我们关注得比较多的是一个进程可打开的最大文件数,即open files。
系统允许创建的最大进程数量即是max user processes 这个参数。
我们可以使用 ulimit -u 4096 修改max user processes的值,但是只能在当前终端的这个session里面生效,重新登录后仍然是使用系统默认值。
正确的修改方式是修改/etc/security/limits.d/90-nproc.conf文件中的值。
1 2 3 4 5 6 |
$ cat / etc / security / limits . d / 90 - nproc . conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning.
* soft nproc 4096 |
我们只要修改上面文件中的4096这个值,即可。
免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com