在运行了大约几个月的 AIX 系统 (AIX p740 1 7) 中,某些点不再被重用。
使用“who”命令和以下“awk”表达式注意到这一点,每天运行数周:
who | awk '{ printf "%s %s\n", $2, $1 }' | awk -F'/' '{ printf "%s\n", $2 }' | sort -n | awk 'BEGIN{port=$1} {if (port+0 != $1) {printf "--- FREE PTS: %s - %s\n", port, $1-1}; printf "pts/%s (%s)\n", $1, $2; port=$1+1 }'
典型的输出始终将 pts/14 显示为空闲,而所有其他端口(如 0、1、2 等)在晚上变得空闲,并在第二天再次分配,端口 14 除外(我不能检查更多可以具有与 pts/14 相同行为的端口,因为每天大约有 600 个端口正在使用,分析在端口 14 处停止)。
pts/0 (foo)
pts/1 (foo)
pts/2 (foo)
pts/3 (foo)
pts/4 (user12)
pts/5 (bar)
pts/6 (user12)
pts/7 (foo)
pts/8 (user13)
pts/9 (foo)
pts/10 (foo)
pts/11 (foo)
pts/12 (bar)
pts/13 (foo)
--- FREE PTS: 14 - 14
pts/15 (foo)
pts/16 (foo)
pts/17 (user13)
pts/18 (user13)
有什么办法可以查到原因吗?并“释放”这个端口?
答案1
who
只显示登录信息。例如,tmux
/screen
打开一个pty,但我认为它不算登录。我认为你可以找到进程(pid)fuser /dev/pts/14
。
(我会lsof
在 Linux 上使用,但fuser
应该可以在任何 posix 系统上使用)。