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.