sh: fork: Resource temporarily unavailable

  1. Wolfgang K.

    Wolfgang K. Thread StarterMacUser Mitglied

    Mitglied seit:
    17.02.2005
    Beiträge:
    13
    Zustimmungen:
    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
     
    Wolfgang K., 09.10.2006
  2. dpr

    dprMacUser Mitglied

    Mitglied seit:
    04.04.2006
    Beiträge:
    519
    Zustimmungen:
    0
    Könnten die limits sein. Was sagt

    Code:
    ulimit -a
    
    insbesondere "max user processes", "open files"?
     
  3. Wolfgang K.

    Wolfgang K. Thread StarterMacUser Mitglied

    Mitglied seit:
    17.02.2005
    Beiträge:
    13
    Zustimmungen:
    0
    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., 10.10.2006
  4. dpr

    dprMacUser Mitglied

    Mitglied seit:
    04.04.2006
    Beiträge:
    519
    Zustimmungen:
    0
    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.
     
Die Seite wird geladen...
Ähnliche Themen - fork Resource temporarily
  1. awado
    Antworten:
    5
    Aufrufe:
    714