Besoin de plus de pseudo-terminaux

11

J'utilise tmux et je crée de nombreuses sessions sur différents serveurs. Après avoir ouvert 128, je ne peux plus en ouvrir de nouveaux, ni ouvrir de nouveaux onglets dans Terminal. Les messages d'erreur sont:

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

Existe-t-il un moyen d'augmenter le nombre de ptys?

Steve Wills
la source
Il serait utile de savoir quelle version d'OS X vous utilisez, et quel type de Mac, et en particulier, combien de RAM vous avez installé.
gosmond
J'utilise 10.8.2 et j'ai 8 Go de RAM, ce qui devrait être plus que suffisant pour ouvrir des milliers de sessions ssh.
Steve Wills

Réponses:

14

(Testé sur OS X 10.8.2; les autres versions peuvent être légèrement différentes.)

Vous pouvez modifier la limite du système sur ptys avec la commande sysctl .

sudo sysctl -w kern.tty.ptmx_max=255

Cela devrait immédiatement vous permettre d'ouvrir plus de ptys.

Pour définir cela automatiquement après chaque redémarrage, mettez la ligne suivante dans le /etc/sysctl.conffichier:

kern.tty.ptmx_max=255

(Remarque: je n'ai pas essayé cela, mais, en regardant le code source, il semble que launchd traite ce fichier.)

Ce fichier peut ne pas exister; si vous devez le créer, vous devez probablement être sûr qu'il a une propriété et des autorisations restreintes:

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

Finalement, vous pouvez rencontrer d'autres limites de ressources par processus ou par utilisateur (par exemple, le nombre total de processus par utilisateur et le nombre total de descripteurs de fichiers ouverts par processus).

Chris Johnsen
la source
Finalement obtenu de tester cela, fonctionne très bien, merci. Pour mémoire, je ne pouvais pas régler cela au-dessus de 999, mais cela suffira pour l'instant.
Steve Wills
1
Cela me permet d'ouvrir jusqu'à 169 ptys, mais pas plus. sudo sysctl kern.tty.ptmx_maxrenvoie 999ce qui est correct. Quelque chose me manque sur celui-ci?
ubuntudroid
@ubuntudroid: Vous pourriez rencontrer une limite sur le nombre de fichiers ouverts ( ulimiten bash ). Ces types de limites sont hérités des processus parents, donc pour le changer pour tmux, vous devrez le changer (par exemple) dans un shell puis redémarrer votre serveur tmux . Pour rendre le changement «persistant», essayez un launchctl.confqui utilise une limitcommande .
Chris Johnsen
Chaque fois que dans tmux sur mon Mac (10.9.4), j'ai remarqué ulimit -aune limite de descripteur de 256 fichiers. L'appel a ulimit -n 2000totalement fonctionné.
Steven Lu