KT 클라우드 리눅스서버의 bash의 timeout 시간이 300초 이다.

테스트 중에 서버 접속이 너무 자주 끊겨서 TMOUT 값을 조정하려 했더니 KT에서 리눅스 VM에 TMOUT 변수를 readonly로 설정해 뒀다.

 

TMOUT 값 확인

[root@server ~]# echo $TMOUT
300

TMOUT 변수가 read only로 되어 있어서 변경이 되지 않는다.

[root@server ~]# export TMOUT=0
-bash: TMOUT: readonly variable

[root@server ~]# unset TMOUT
-bash: unset: TMOUT: cannot unset: readonly variable

[root@server ~]# echo "TMOUT=1800" >> /etc/profile

[root@server ~]# source /etc/profile

-bash: TMOUT: readonly variable

아래와 같이 해도 역시 변경 되지 않는다.

[root@server ~]# unset TMOUT > /dev/null 2>&1

[root@server ~]# echo $TMOUT
300

 

이것을 해결하는 방법은 두가지가 있다.

TMOUT 변경 방법 1)

아래와 같이 redonly TMOUT 정의가 된 bashrc의 내용을 수정한다.

[root@server ~]# cat /etc/bashrc

TMOUT=300  --> 이 변수 값을 0으로 변경 후 저장
readonly TMOUT
export TMOUT

새로운 세션으로 bash 접속

[root@server ~]# echo $TMOUT

0

 

TMOUT 변경 방법 2)

gdb를 통해 bash의 unbind_variable 메서드를 호출함으로써 변수를 제거할 수도 있다.

[root@server ~]# readonly PI=3.14

[root@server ~]# unset PI
-bash: unset: PI: cannot unset: readonly variable

[root@server ~]# unset PI > /dev/null 2>&1
if [ $? -ne 0 ]; then
gdb <<EOF > /dev/null 2>&1
attach $$
call unbind_variable("PI")
detach
quit
EOF
fi

[root@server ~]# echo $PI
--> 값이 출력되지 않는다.
[root@server ~]

같은 방식으로 PI라는 변수대신 TMOUT 변수를 넣어서 gdb를 통하면 TMOUT 변수가 제거된다.

* gdb 패키지가 설치가 되어 있어야 한다.

 

즉, TMOUT 변수를 제거하려면 아래 파란색 부분을 쉘에 붙혀넣기 해서 실행하면 된다.

gdb <<EOF > /dev/null 2>&1
attach $$
call unbind_variable("TMOUT")
detach
quit
EOF

 

[root@server ~]# echo $TMOUT

[root@server ~]#

리눅스 쉘 접속시간(read only TMOUT 변수) 변경

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다