Ich verwende Ubuntu 12.04 und habe ein großes Problem. Zwei getrennte Male hat heute eine meiner offenen Gnome-Terminal-Sitzungen den Fehler gesperrt und ausgedruckt
pipe: too many open files
Mir ist klar, dass dies wahrscheinlich mit meinem angezeigten Benutzerlimit zusammenhängt ulimit -n
, bei dem es sich übrigens um 1024 handelt. Das Problem ist, dass ich in diesem Fall das Beenden des betreffenden Terminals erzwingen kann, aber dann nichts öffnen kann, was eine neue PID erzeugt. Zum Beispiel kann ich xkill
nichts töten, ich kann kein anderes Terminal öffnen, um nach oben zu schauen, ich kann das Herunterfahren nicht ausführen, ich kann nicht nur zu einer Konsole wechseln und mich anmelden. Wenn Sie auf einen Link klicken, der ein X-Fenster öffnen soll, wird ein neues Fenster mit folgendem Inhalt angezeigt:
There was an error launching the application.
Details: Failed to fork (Cannot allocate memory)
Dies ist derselbe Fehler, den ich erhalte, wenn ich versuche, mich anzumelden, nachdem ich Strg + Alt + F1 gedrückt habe. Da ich zu diesem Zeitpunkt völlig festgefahren bin, bin ich gezwungen, meinen Computer zu starten. Dies macht das Debuggen extrem schwierig.
Kann ich irgendetwas tun, um das Problem zu beheben, sobald dieser Fehler auftritt? Wie gehe ich vor, um den Fehler aufzuspüren?
Als letzte Anmerkung habe ich nicht eine lächerliche Anzahl von Dingen ausgeführt: zwei Terminals, eines mit einer Byobu-Sitzung mit 2 Registerkarten, eines mit einer Python-Sitzung; Eine einzige Instanz von Emacs, ein einziges Google Chrome und mehrere ROS-Knoten (Robot Operating System).
BEARBEITEN
Durch Drücken von Strg + Alt + Rücktaste, um meinen Display-Manager neu zu starten, konnte ich mich nur wieder anmelden und ein Terminal öffnen. Die Verwendung ps
ergab, dass immer noch viele Prozesse ausgeführt wurden, bei denen die Überbrückung stattgefunden hatte. Auf diese Weise kann ich meinen Computer zumindest von einer Software aus neu starten. Wie soll ich vorgehen, um festzustellen, was dieses Problem verursacht?
BEARBEITEN 2
Ich habe gerade zwei Terminals geöffnet, die ich gerade beiseite gelegt habe, und auf den Absturz gewartet. Sobald es passierte, konnte ich einen Screenshot von der Ausgabe von erfassen top
. Ich weiß nicht, ob die Ausgabe besonders nützlich sein wird, aber ich habe sie angehängt. Das Einzige, was mir aufgefallen ist, ist, dass es 5 Zombie-Prozesse gibt.
top
Ausführung in einem anderen Fenster starten , bevor das Problem auftritt, und dann zu diesem Fenster gehen und sehen, was dort steht? Haben Sie versucht, Ihr ulimit zu erhöhen, nachdem das Problem aufgetreten ist (es wird kein neuer Prozess ausgelöst )?