如何找出什么消耗Linux的pty的

在我的Linux服务器上分配的ptys(/ proc / sys / kernel / pty / nr)数量不断增长,超过了活动login,terminal和屏幕会话数量级的数量。 只有系统重新启动重置似乎重置它。

我怎样才能知道哪个进程吃掉了pty的?

我在答案1中尝试了这个build议,但是

# 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对超级用户的回答 ,你所看到的是由于linux中的一个bug。 / proc / sys / kernel / pty / nr在pty不再使用时不递减。 这就是为什么lsof显示一个较低的数字。 这在2009年11月被注意到 ,但直到2011年8月才被修复 。

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