如何找出 Linux pty 的消耗者

如何找出 Linux pty 的消耗者

我的 Linux 服务器上分配的 ptys (/proc/sys/kernel/pty/nr) 数量不断增长,并且比活动登录、终端和屏幕会话的数量高出几个数量级。只有系统重启才能重置它。

我怎样才能找出哪个进程正在消耗 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

答案1

根据 Grawity 的回答在超级用户上,您所看到的情况是由于 Linux 中的一个错误造成的。/proc/sys/内核/pty/nr当 pty 不再使用时,不会减少。这就是 lsof 显示较低数字的原因。这是注意到2009 年 11 月,但不是固定的直至2011年8月。

答案2

Ptys 是文件句柄。您可以使用它lsof来找出哪个进程保持哪些文件处于打开状态。

# lsof -n | grep pts

答案3

一个 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

相关内容