12 votes

Besoin de plus de pseudo-terminaux

J'utilise tmux et crée de nombreuses sessions vers différents serveurs. Après en avoir ouvert 128, je ne peux plus en ouvrir de nouvelles, ni ouvrir de nouveaux onglets dans Terminal. Le message d'erreur est le suivant :

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

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

14voto

Nip Points 362

(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 les ptys avec la commande sysctl commandement.

sudo sysctl -w kern.tty.ptmx_max=255

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

Pour définir ce paramètre automatiquement après chaque redémarrage, mettez la ligne suivante dans le fichier /etc/sysctl.conf fichier :

kern.tty.ptmx_max=255

(Note : je n'ai pas essayé, mais, en regardant le code source, on dirait que lancé sur le marché traite ce fichier).

Ce fichier peut ne pas exister ; si vous devez le créer, vous devriez probablement vous assurer qu'il dispose d'une propriété et de permissions restreintes :

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

Vous pouvez éventuellement 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).

0voto

Old Pro Points 5634

J'avais un nouveau terminal Windows qui échouait avec

[forkpty: Too many open files]
[Could not create a new process and open a pseudo-tty.]

même si j'avais kern.tty.ptmx_max: 511 (le paramètre par défaut pour mon ordinateur qui exécute Catalina avec 64 Go de mémoire). J'ai également kern.maxfilesperproc: 98304 donc je savais que ce n'était pas cette limite non plus.

Je pensais que ça pourrait être ulimit depuis ulimit -n était de 256, mais n'a pas tenu compte du fait que lsof -c Terminal | wc était de 315, bien au-dessus de 256. Il s'avère que c'est était ulimit mais lsof liste plus de fichiers que ulimit limites. Je vais passer l'explication, mais ce que vous devez regarder est

lsof -X -c Terminal | wc

Le site -X limites lsof pour montrer juste les descripteurs de fichiers, ce qui ulimit limites. Il s'agissait de 257 (la limite de 256, plus une ligne d'en-tête dans le fichier lsof sortie).

Donc, en plus des 2 sysctl j'ai dû ajuster les paramètres par défaut ulimit avec launchctl . Cela s'avère plus difficile que prévu.

La commande à utiliser pour visualiser le ulimit des limites souples et rigides sur le nombre de fichiers ouverts. launchctl limit maxfiles ce qui, sur mon ordinateur, donne

maxfiles    256           unlimited

La commande pour changer les limites est launchctl limit maxfiles <softlimit> <hardlimit> mais vous ne pouvez pas fixer la limite dure à "illimité" car le noyau convertit "illimité" en 10240 . Si vous ne tenez pas compte de la limite stricte, la valeur est identique à celle de la limite souple, ce qui est encore pire. Ce que j'ai fait, c'est utiliser la valeur de sysctl kern.maxfilesperproc comme limite stricte. J'ai couru

sudo launchctl limit maxfiles 1001 98304

Eh bien, cela a pris soin de ulimit mais malheureusement, cela a également réinitialisé les paramètres du noyau :

kern.maxfiles: 98304
kern.maxfilesperproc: 1001

ce qui est définitivement pas ce que je voulais. Je voulais que la limite douce modifie l'ulimit par défaut et que la limite dure modifie l'ulimit par défaut. kern.maxfilesperproc mais au lieu de cela, la limite inférieure a changé kern.maxfilesperproc et la limite dure a changé kern.maxfiles . Je l'ai donc relancé, en rétablissant les valeurs précédentes du noyau.

sudo launchctl limit maxfiles 98304 196608

Cela permet de définir le ulimit beaucoup trop élevé, mais je pense que c'est mieux que de fixer la limite du noyau trop bas.

Ces changements ne persistent pas non plus après un redémarrage. Pour les faire persister, maintenant que /etc/launchd.conf ne fonctionne plus, envisagez ces solutions pour persistance d'un seul paramètre o restaurer le comportement de launchd.conf .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X