fork: réessayer: ressource temporairement indisponible

31

Pendant que je me connecte à mon serveur, je reçois,

-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

Et j'essaie également de suivre les commandes, le résultat est le même.

-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$ 

Pourquoi cela vient-il? Et comment puis-je le résoudre?

Rakesh KR
la source
2
On dirait que le swap est surchargé (le système de fichiers / tmp est peut-être plein)
Lambert
2
ulimit -a, peut-être que vous avez atteint une limite de processus
c4f4t0r

Réponses:

21

Cela peut être dû à une limite de ressources, soit sur le serveur lui-même (ou) spécifique à votre compte d'utilisateur. Les limites de votre shell peuvent être vérifiées via ulimit -a. Esp recherche ulimit -ules processus utilisateur max, si vous avez atteint le nombre maximal de processus, fork ne peut pas en créer de nouveau et échoue avec cette erreur. Cela peut également être dû à un problème de ressources de swap / mémoire

VenkatC
la source
9

fork: Ressource temporairement indisponible

L'erreur signifie que la ressource shell actuelle est limitée (vérifiez les limites par ulimit -a). Vous pouvez donc soit essayer dans un autre shell, soit augmenter les ressources en utilisant la ulimitcommande qui contrôle les ressources disponibles pour le shell et les processus qu'il crée sur le système d'exploitation.

Pour augmenter les limites, essayez d'exécuter:

ulimit -Sn unlimited && ulimit -Sl unlimited

pour augmenter les limites souples à un niveau difficile, ou:

ulimit -l unlimited
ulimit -n 10240 

pour définir la taille maximale d'un processus sur illimité et le nombre maximal de fichiers ouverts sur 10240.

Voir: help ulimitpour plus d'informations.

Pour le rendre persistant, ajoutez les paramètres ci-dessus dans vos fichiers rc de démarrage (par exemple ~/.bashrc).


Vous pouvez également utiliser /etc/sysctl.conf(voir: man sysctl.conf) pour augmenter les limites du noyau, par exemple

kern.maxprocperuid=1000
kern.maxproc=2000
kenorb
la source
1
Lorsque cette erreur se produit, la «nouvelle tentative» implique-t-elle qu'elle tentera à plusieurs reprises jusqu'à ce que les ressources deviennent disponibles?
DaveTheMinion
@DavidB Ou qu'il a fait nouvelle tentative, mais a échoué.
Kusalananda
@Kusalananda D'accord merci.
DaveTheMinion
0

Le problème peut également être résolu à l'aide des commandes suivantes:

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

Ici, user1 est le groupe d'utilisateurs pour lequel la limite a été dépassée

Arun
la source
Tuer tous les processus appartenant à l'utilisateur semble un peu lourd. De plus, cette yumcommande ne serait probablement pas en mesure de bifurquer non plus.
Kusalananda
La commande yum sera exécutée via l'utilisateur root, en supposant que le problème s'est produit sur un utilisateur différent de root
Arun
Si le shell ne parvient pas à se bifurquer, dfil aurait également des problèmes de fonctionnement sudo.
Kusalananda