Benötigen Sie mehr Pseudo-Terminals

11

Ich verwende tmux und erstelle viele Sitzungen auf verschiedenen Servern. Nach dem Öffnen von 128 kann ich keine neuen oder neuen Registerkarten mehr im Terminal öffnen. Die Fehlermeldungen lauten:

forkpty: Device not configured
Could not create a new process and open a pseudo-tty.

Kann ich die Anzahl der Ptys auf irgendeine Weise erhöhen?

Steve Wills
quelle
Es wäre hilfreich zu wissen, welche Version von OS X Sie ausführen und welche Art von Mac und insbesondere wie viel RAM Sie installiert haben.
Gosmond
Ich verwende 10.8.2 und habe 8 GB RAM, was mehr als genug sein sollte, um Tausende von SSH-Sitzungen zu öffnen.
Steve Wills

Antworten:

14

(Getestet unter OS X 10.8.2; andere Versionen können geringfügig abweichen.)

Sie können das Systemlimit für ptys mit dem Befehl sysctl ändern .

sudo sysctl -w kern.tty.ptmx_max=255

Dadurch sollten Sie sofort mehr ptys öffnen können.

Um dies nach jedem Neustart automatisch einzustellen, fügen Sie die folgende Zeile in die /etc/sysctl.confDatei ein:

kern.tty.ptmx_max=255

(Hinweis: Ich habe dies nicht versucht, aber nach einem Blick auf den Quellcode sieht es so aus, als würde launchd diese Datei verarbeiten.)

Diese Datei ist möglicherweise nicht vorhanden. Wenn Sie es erstellen müssen, sollten Sie wahrscheinlich sicher sein, dass es über eingeschränkte Eigentumsrechte und Berechtigungen verfügt:

sudo chown root:wheel /etc/sysctl.conf
sudo chmod 644 /etc/sysctl.conf

Möglicherweise stoßen Sie auf andere Ressourcenbeschränkungen pro Prozess oder pro Benutzer (z. B. Gesamtzahl der Prozesse pro Benutzer und Gesamtzahl der Deskriptoren für offene Dateien pro Prozess).

Chris Johnsen
quelle
Irgendwann muss ich das testen, funktioniert super, danke. Für die Aufzeichnung konnte ich dies nicht über 999 einstellen, aber das wird vorerst reichen.
Steve Wills
1
Dadurch kann ich bis zu 169 ptys öffnen, aber nicht mehr. sudo sysctl kern.tty.ptmx_maxgibt zurück, 999was korrekt ist. Fehlt mir etwas?
Ubuntudroid
@ubuntudroid: Möglicherweise ist die Anzahl der geöffneten Dateien ( ulimitin Bash ) begrenzt. Diese Art von Limits wird von übergeordneten Prozessen geerbt. Um sie für tmux zu ändern, müssen Sie sie in (z. B.) einer Shell ändern und dann Ihren tmux- Server neu starten . Versuchen Sie einen launchctl.conf, der einen limitBefehl verwendet, um die Änderung "dauerhaft" zu machen .
Chris Johnsen
Immer wenn ich in tmux auf meinem Mac (10.9.4) war, bemerkte ich ulimit -aein Limit von 256 Dateideskriptoren. Das Anrufen hat aber ulimit -n 2000total funktioniert.
Steven Lu