터미널로 텔넷  접속시 "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

위에서와 같이 실제 로그인한 사용자의 가상터미널 번호로 프로세스 확인이 가능하다.

그런데 로그인한 사용자의 가상 터미널이 아닌데도 불구하고 해당 프로세스가 존재한다면  해당 어플리케이션에서 자원을 제대로 반환하지 못한 결과이다.