Kiedy łączę się z serwerem,
-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ę też wykonywać 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 tak się dzieje? I jak mogę to rozwiązać?
Komentarze
- Wygląda na to, że swap jest przeciążony (system plików / tmp prawdopodobnie pełny)
- ulimit -a, być może przekroczyłeś jakiś limit procesów
Odpowiedź
Może to być również spowodowane ograniczeniem zasobów na samym serwerze (lub) specyficznym dla twojego konta użytkownika. Limity w Twojej powłoce można sprawdzić poprzez ulimit -a
. Esp sprawdź ulimit -u
maksymalną liczbę procesów użytkownika. Jeśli osiągnąłeś maksymalną liczbę procesów, fork nie może utworzyć żadnego nowego i nie powiodło się z tym błędem. Może to być również spowodowane problemem z zasobami wymiany / pamięci
Odpowiedź
fork: 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 wypróbować inną powłokę lub zwiększyć zasoby za pomocą polecenia ulimit
, które kontroluje zasoby dostępne dla powłoki i przetwarza, które tworzy w systemie operacyjnym.
Aby zwiększyć limity, spróbuj uruchomić:
ulimit -Sn unlimited && ulimit -Sl unlimited
, aby podnieść miękkie limity do twardych, lub:
ulimit -l unlimited ulimit -n 10240
aby ustawić nieograniczony maksymalny rozmiar procesu i maksymalną liczbę otwieranych plików na 10240.
Zobacz: help ulimit
dla wię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
Komentarze
- Czy w przypadku wystąpienia tego błędu " ponów próbę " oznacza, że próba będzie powtarzana do ponownego ources stało się dostępne?
- @DavidB Lub że próbowano ponawiać próbę, ale nie powiodło się.
- kern.maxprocperuid, kern.maxproc, kernel.maxprocperuid i kernel. maxproc nie istnieje w Ubuntu. Jaka jest tam alternatywa?
Odpowiedź
Problem można również rozwiązać za pomocą następujących poleceń:
yum install psmisc killall -STOP -u user1 killall -KILL -u user1
W tym przypadku użytkownik1 to grupa użytkowników, dla której przekroczono limit
Komentarze
- Zabijanie każdego pojedynczego procesu należącego do użytkownika te wydaje się nieco ciężko pracujące. Ponadto to polecenie
yum
prawdopodobnie również nie byłoby w stanie rozwidlić. - Polecenie yum zostanie uruchomione przez użytkownika root, przy założeniu, że problem wystąpił na innym użytkownik niż root
- Jeśli powłoka nie rozwiąże
df
, wystąpią problemy z uruchomieniemsudo
. - Styl BOFH. Podoba mi się!