터미널로 텔넷 접속시 "telnetd: All network ports in use." 라고 나오면서 더이상 로그인 되지 않을때 조치 방법에 대해 알아본다.
위 상황은 Pseudo-Terminal이 default로 256인데 사용자가 256명 이상 접속 했거나.
또는 어플리케이션에서 사용한 리소스를 제대로 반환하지 못해서 발생한다.
이때 콘솔에서 root로 접속하여 다음 사항을 점검한다.
(root는 tty나 vty를 사용하기 때문에 로그인 될것이다.)
아래와 같이 시스템을 점검한다.
# lsattr -El pty0
ATTnum 256 Maximum number of Pseudo-Terminals True
BSDnum 16 Maximum number of BSD Pseudo-Terminals True
autoconfig available STATE to be configured at boot time True
csmap sbcs N/A True
# who | wc -l
3
# ps -ef| grep -v grep| grep telnetd| wc -l
3
실제 접속한 사용자는 3명임에도 불구하고 시스템에 로그인이 되지 않는다면,
어플리케이션에서 해당 자원을 제대로 반환하지 않아서 발생할 가능성이 높다.
(Pseudo-Terminal은 시스템 설정에 의해 아래 디렉토리에 Pseudo-Terminal이 생성된다.)
아래와 같이 확인한다.
# cd /dev/pts
# ls -l | grep -v total wc -l
256
# who
admin1 pts/1 Sep 30 09:41 (******)
admin2 pts/4 Sep 30 15:03 (******)
admin3 pts/6 Sep 30 16:40 (*******)
#fuser 6
6: 499946 1830930
#ps -ef| grep 499946
root 499946 1830930 0 16:40:11 pts/6 0:00 -ksh
root 1487062 499946 1 16:59:33 pts/6 0:00 ps -ef
root 1630420 499946 0 16:59:33 pts/6 0:00 grep 499946
위에서와 같이 실제 로그인한 사용자의 가상터미널 번호로 프로세스 확인이 가능하다.
그런데 로그인한 사용자의 가상 터미널이 아닌데도 불구하고 해당 프로세스가 존재한다면 해당 어플리케이션에서 자원을 제대로 반환하지 못한 결과이다.
