Нужно больше псевдо-терминалов

11

Я использую tmux и создаю много сессий на разных серверах. После открытия 128 я больше не могу открывать новые или открывать новые вкладки в терминале. Сообщения об ошибках:

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

Есть ли способ, как я могу увеличить количество ptys?

Стив Уиллс
источник
Было бы полезно узнать, какую версию OS X вы используете, и какой Mac, и, в частности, сколько оперативной памяти у вас установлено.
Госмонд
Я использую 10.8.2 и 8 ГБ оперативной памяти, чего должно быть более чем достаточно, чтобы открыть тысячи сессий SSH.
Стив Уиллс

Ответы:

14

(Протестировано на OS X 10.8.2; другие версии могут немного отличаться.)

Вы можете изменить системный лимит на ptys с помощью команды sysctl .

sudo sysctl -w kern.tty.ptmx_max=255

Это должно немедленно позволить вам открыть больше ptys.

Чтобы установить это автоматически после каждой перезагрузки, поместите в /etc/sysctl.confфайл следующую строку :

kern.tty.ptmx_max=255

(Примечание: я не пробовал этого, но, глядя на исходный код, похоже, что launchd действительно обрабатывает этот файл.)

Этот файл может не существовать; если вам нужно его создать, вы, вероятно, должны быть уверены, что у него ограничены права доступа и права доступа:

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

В конце концов вы можете столкнуться с некоторыми другими ограничениями ресурсов для каждого процесса или пользователя (например, общее количество процессов на пользователя и общее количество дескрипторов открытых файлов на процесс).

Крис Джонсен
источник
В конце концов получил, чтобы проверить это, прекрасно работает, спасибо. Для справки, я не мог установить это выше 999, но это будет делать сейчас.
Стив Уиллс
1
Это позволяет мне открыть до 169 ptys, но не более. sudo sysctl kern.tty.ptmx_maxвозвращает 999что правильно. Что-то мне не хватает в этом?
Ubuntudroid
@ubuntudroid: у вас может быть ограничение на количество открытых файлов ( ulimitв bash ). Эти виды ограничений наследуются от родительских процессов, поэтому чтобы изменить его для tmux, вам нужно будет изменить его (например, в оболочке), а затем перезапустить сервер tmux . Чтобы сделать изменение «постоянным», попробуйте launchctl.confиспользовать limitкоманду .
Крис Джонсен
Всякий раз, когда внутри tmux на моем Mac (10.9.4) я замечал, что ulimit -aсообщалось о ограничении дескриптора файла 256. Звонок ulimit -n 2000полностью сработал, хотя.
Стивен Лу