1. 程式人生 > >-bash: fork: retry: Resource temporarily unavailable錯誤

-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
(512bytes,-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    nproc4096

我們只要修改上面檔案中的4096這個值,即可。