
В системе 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).