フォーク:再試行:リソースを一時的に使用できません。

フォーク:再試行:リソースを一時的に使用できません。

私のサーバーに接続すると、次の結果が表示されます。

-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable

また、次のコマンドを実行してみましたが、結果は同じでした。

-bash-4.1$ df -h
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 
-bash-4.1$ ls -lrth
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Interrupted system call
-bash-4.1$ 
-bash-4.1$ ps -aef | grep `pwd`
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 

なぜ来るの?どうすれば解決できますか?

答え1

これは、サーバー自体(またはユーザーアカウント固有)の一部のリソース制限が原因である可能性があります。シェルの制限を確認できますulimit -a。 Espは、ulimit -u最大ユーザープロセス数を確認します。最大プロセス数に達すると、フォークは新しいプロセスを作成できず、このエラーで失敗します。これは、スワップ/メモリリソースの問題によるものかもしれません。

答え2

フォーク:リソースを一時的に使用できません。

このエラーは、現在のシェルリソースが制限されていることを示します(制限の確認ulimit -a)。したがって、他のシェルでリソースを増やすか、ulimitシェルで使用できるリソースとオペレーティングシステムで生成されるプロセスを制御するコマンドを使用してリソースを増やすことができます。

制限を増やすには、以下を実行してください。

ulimit -Sn unlimited && ulimit -Sl unlimited

ソフト制限をハード制限に増やすか、次の操作を行います。

ulimit -l unlimited
ulimit -n 10240 

プロセスの最大サイズを無制限に設定し、開いたファイルの最大数を10240に設定します。

詳細については、以下を参照してくださいhelp ulimit

これを継続的に作成するには、上記の設定をスタートアッププログラムに追加してください。RCファイル(例~/.bashrc:)。


以下を使用してカーネル制限を増やすこともできます/etc/sysctl.conf(manを参照)。sysctl.conf

kern.maxprocperuid=1000
kern.maxproc=2000

答え3

dmesgあなたの友達です。このコマンドを実行して、システムが何かをブロックする理由を確認してください。

systemdベースのシステムでは、ユーザー制限もあります。次のコマンドを使用して制限を確認できます。

systemctl status user-1000.slice
systemctl cat user-1000.slice

1000は、担当ユーザ、すなわちログインしたいユーザのPIDである。

詳しくは、次のページをご覧ください。ここでは、特定のユーザーまたはすべてのユーザーの制限を変更または変更する方法を学ぶことができます。

https://www.suse.com/support/kb/doc/?id=000019044

答え4

この問題は、次のコマンドを使用して解決することもできます。

yum install psmisc
killall -STOP -u user1
killall -KILL -u user1

ここで、user1 は制限を超えたユーザーのグループです。

関連情報