fork: retry: risorsa temporaneamente non disponibile


31

Mentre mi collego al mio server ricevo,

-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

E provo anche a seguire i comandi, quindi il risultato è lo stesso.

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

Perché questa venuta? E come posso risolverlo?


2
Sembra che lo swap sia sovraccarico (il filesystem / tmp potrebbe essere pieno)
Lambert,

2
ulimit -a, forse hai raggiunto qualche limite di processo
c4f4t0r

Risposte:


21

Ciò potrebbe essere dovuto a un limite di risorse, sia sul server stesso (o) specifico per il tuo account utente. I limiti nella shell possono essere verificati tramite ulimit -a. Controllo esp per ulimit -ui processi max utente, se hai raggiunto i processi max, fork non è in grado di creare nuovi e non riesce con quell'errore. Ciò potrebbe anche essere dovuto al problema delle risorse di scambio / memoria


9

fork: risorsa temporaneamente non disponibile

L'errore indica che la risorsa shell corrente è limitata (controllare i limiti di ulimit -a). Quindi puoi provare in un'altra shell o aumentare le risorse usando il ulimitcomando che controlla le risorse disponibili per la shell e i processi che crea sul sistema operativo.

Per aumentare i limiti, prova a eseguire:

ulimit -Sn unlimited && ulimit -Sl unlimited

per innalzare i limiti soft a quelli più rigidi, oppure:

ulimit -l unlimited
ulimit -n 10240 

per impostare la dimensione massima di un processo su illimitata e il numero massimo di file aperto su 10240.

Vedi: help ulimitper maggiori informazioni.

Per renderlo persistente, aggiungi le impostazioni sopra nei tuoi file rc di avvio (es~/.bashrc .).


Puoi anche usare /etc/sysctl.conf(vedi: man sysctl.conf) per aumentare i limiti del kernel, ad es

kern.maxprocperuid=1000
kern.maxproc=2000

1
Quando si verifica questo errore, il "riprovare" implica che verrà tentato ripetutamente fino a quando le risorse non saranno disponibili?
DaveTheMinion,

@DavidB O che ha fatto dei tentativi, ma non è riuscito.
Kusalananda

@Kusalananda Okay grazie.
DaveTheMinion,

0

Il problema può anche essere risolto utilizzando i seguenti comandi:

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

Qui user1 è il gruppo di utenti per il quale è stato superato il limite


Uccidere ogni singolo processo appartenente all'utente sembra un po 'pesante. Inoltre, quel yumcomando probabilmente non sarebbe nemmeno in grado di fork.
Kusalananda

Il comando yum verrà eseguito dall'utente root, supponendo che si sia verificato un problema su un utente diverso rispetto a root
Arun,

Se la shell non riesce a biforcarsi df, avrebbe anche problemi a funzionare sudo.
Kusalananda
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.