fork: retry: zasób tymczasowo niedostępny


31

Podczas łączenia się z moim serwerem otrzymuję,

-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

Próbuję również wykonać następujące polecenia, a wynik jest taki sam.

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

Dlaczego to nadchodzi? Jak mogę to rozwiązać?


2
Wygląda na to, że swap jest przeciążony (prawdopodobnie system plików / tmp jest pełny)
Lambert

2
ulimit -a, może osiągnąłeś limit procesu
c4f4t0r

Odpowiedzi:


20

Może to wynikać z pewnego limitu zasobów, na samym serwerze (lub) specyficznym dla twojego konta użytkownika. Limity w twojej powłoce można sprawdzić poprzez ulimit -a. Sprawdzanie Esp dla ulimit -umaksymalnej liczby procesów użytkownika, jeśli osiągnąłeś maksymalną liczbę procesów, fork nie może utworzyć żadnych nowych i kończy się niepowodzeniem z tym błędem. Może to być również spowodowane problemem wymiany zasobów / pamięci


9

widelec: zasób tymczasowo niedostępny

Błąd oznacza, że ​​bieżący zasób powłoki jest ograniczony (sprawdź limity przez ulimit -a). Możesz więc spróbować użyć innej powłoki lub zwiększyć zasoby za pomocą ulimitpolecenia kontrolującego zasoby dostępne dla powłoki i procesy, które tworzy ona w systemie operacyjnym.

Aby zwiększyć limity, spróbuj uruchomić:

ulimit -Sn unlimited && ulimit -Sl unlimited

podnieść miękkie granice do twardego lub:

ulimit -l unlimited
ulimit -n 10240 

aby ustawić maksymalny rozmiar procesu na nieograniczony, a maksymalną liczbę otwartych plików na 10240.

Zobacz: help ulimitwięcej informacji.

Aby było trwałe, dodaj powyższe ustawienia do plików startowych rc (np ~/.bashrc.).


Możesz także użyć /etc/sysctl.conf(patrz: man sysctl.conf), aby zwiększyć limity jądra, np

kern.maxprocperuid=1000
kern.maxproc=2000

1
Czy po wystąpieniu tego błędu „ponawianie” oznacza, że ​​będzie próbował wielokrotnie, aż zasoby staną się dostępne?
DaveTheMinion

@DavidB lub że zrobił powtórzenie, ale nie powiodło się.
Kusalananda

@Kusalananda Dobra dziękuję.
DaveTheMinion

0

Problem można również rozwiązać za pomocą następujących poleceń:

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

Tutaj użytkownik1 to grupa użytkowników, dla której limit został przekroczony


Zabijanie każdego procesu należącego do użytkownika wydaje się nieco skomplikowane. Również to yumpolecenie prawdopodobnie nie będzie w stanie rozwidlić.
Kusalananda

Polecenie yum zostanie uruchomione przez użytkownika root, przy założeniu, że problem wystąpił u innego użytkownika niż root
Arun

Jeśli powłoka nie rozwidli się df, miałby również problemy z uruchomieniem sudo.
Kusalananda
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.