fork: retry: Zasób tymczasowo niedostępny

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 uruchomieniem sudo.
  • Styl BOFH. Podoba mi się!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *