Количество выделенных ptys (/ proc / sys / kernel / pty / nr) на моем Linux-сервере постоянно растет и на порядки превышает количество активных входов в систему, терминалов и сеансов экрана. Кажется, что только перезагрузка системы сбрасывает ее.
Как я могу узнать, какой процесс съедает pty?
Я попробовал предложение в ответе 1, но
# lsof -n | grep pts | wc -l
137
# cat /proc/sys/kernel/pty/nr
696
# uname -a
Linux spitzer 2.6.32-34-server #77-Ubuntu SMP Tue Sep 13 20:54:38 UTC 2011 x86_64 GNU/Linux
Согласно Grawity's ответ на суперпользователе то, что вы видите, связано с ошибкой в Linux. / proc / sys / ядро / pty / номер не уменьшается, когда pty больше не используется. Вот почему lsof показывает меньшее число. Это было обратил внимание в ноябре 2009 г., но не фиксированный до августа 2011 г.
Ptys - это дескрипторы файлов. Ты можешь использовать lsof
чтобы узнать, какой процесс оставляет открытыми какие файлы.
# lsof -n | grep pts
С pty может быть связано более одного «файла». Если вы примете это во внимание, номер kernel.pty.nr будет соответствовать номеру lsof.
cat /proc/sys/kernel/pty/nr
10
lsof -n | fgrep pts | wc -l
58
lsof -n | fgrep pts | sed 's/ */ /g' | cut -f9 -d' ' | sort | uniq | wc -l
10