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 ~]#