sh: fork: Resource temporarily unavailable

Wolfgang K.

Neues Mitglied
Thread Starter
Dabei seit
17.02.2005
Beiträge
13
Reaktionspunkte
0
Hi,
vielleicht kann mir da jemand helfen: Wenn ich ein paar Terminalfenster öffne kommt irgendwann der Fehler "sh: fork: Resource temporarily unavailable". Wenn ich welche schließe funktionierts dann wieder. Gibt es eine Möglichkeit das zu umgehen?

tia,
Wolfgang
 
ulimit -a

Hallo dpr,
danke für den Hinweis, das könnte es sein. Habe bei "open files" 256 und bei "max user processes" 100 stehen.

Das Problem: Wie kann ich die Limits ändern? "sudo ulimit -u 9000" wird z.B. zwar ohne Fehler- und Rückmeldung ausgeführt, aber weder sofort noch nach einem Neustart übernommen.

Grüße,
Wolfgang
 
Wolfgang K. schrieb:
Das Problem: Wie kann ich die Limits ändern? "sudo ulimit -u 9000" wird z.B. zwar ohne Fehler- und Rückmeldung ausgeführt, aber weder sofort noch nach einem Neustart übernommen.
Die Limits vererben sich vom Vaterprozeß auf die Kinderprozesse. Ein sudo ... bringt der aufrufenden Shell damit nichts, da sudo einen Prozeß forkt (Kind der Shell) und diesen nach Verrichtung der Arbeit beendet. Auf den Vater hat dies keinen Einfluß.

Grundsätzlich muß man zwischen hard und soft limits unterscheiden. Hard limits geben, wie der Name sagt, die Obergrenze vor und werden i.d.R. in einem der Startscripte des Systems gesetzt (bei mir habe ich diese in /etc/rc, z.B. ulimit -Hu 2068; H=hard, S=soft). Soft limits können dann pro Nutzer in den Grenzen der hard limits gesetzt werden. Das passiert üblicherweise mit dem shell-build-in limit (für tcsh) oder /usr/bin/ulimit (für bash). Also könnte man für tcsh setzen (vorausgesetzt die hard limits lassen dies zu)

Code:
limit maxproc 200
limit descriptors 512

Sinngemäß für bash

Code:
ulimit -Su 200
ulimit -Sn 512

Das gilt, wie gesagt, für diesen Prozess und seine Kinder. Eine zweite Shell wird davon erst dann beeinflußt, wenn sie aus der ersten Shell heraus gestartet wird oder Du die limits in ~/.cshrc oder ~/.profile setzt.
 
Zurück
Oben Unten