WHEREIS

보통 통신 확인할 때, telnet 명령어를 많이 씁니다.

 

헌데, 통신이  막혀있거나 실제로 사용중이지 않는 IP 일 경우 체크 시간이 길어집니다.

통신이 종료 되는 시간은, 약 2분으로 아래 커널 옵션에 의해 정해집니다.

(centos6 가  기본값이 5고, 7이 6인듯?)

 

net.ipv4.tcp_syn_retries = 6

/proc/sys/net/ipv4/tcp_syn_retries : 새 연결을 포기할 때까지 커널이 SYN 패킷을 보내 보는 횟수. 

(*주의* 해당 옵션을 변경하면 telnet 외 모든 TCP연결에 영향이 있음)

 


아래는 실제 retry 하면서 소요되는 시간이다  (이 시간은 어느 값에 의해 결정되지?)


1 + 2 + 4  + 8  + 16 + 32 + 64 = 127 초

 

그래서 스크립트에서 적용하기 위해 아래와 같이 timeout 명령어와 같이 사용하여

없는 IP 혹은 통신이 막힌 경우에도 원하는 시간내에 종료되도록 만들 수 있습니다.

 

echo quit | timeout --signal=9 3 telnet xldap-da01 636 

 

이하 응용은 아래 사이트 참고하면 됩니다.

https://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band
loading