반응형
리눅스 환경에서 빈(꺼져 있는) TCP 포트를 찾고 싶을 때가 있습니다.
예를 들어,
포트 두 개를 이용해서 프론트 서버를 관리하는 환경을 갖춥니다.
하나는 라이브로 서버를 띄워 놓고, 나머지 한 개 포트는 꺼둡니다.
새로운 버전으로 배포해야 하는 상황이 생길 때, 빈 포트에 배포하고 이 포트가 도메인을 가리키도록 바꿉니다.
이렇게 포트 두 개를 스위칭하면서 라이브 서비스를 관리할 수 있습니다.
더 구체적으로 설명하면,
3001번 포트에 프론트 서버를 띄우고 있는 상태인데, 새로운 버전으로 배포를 해야 하는 상황입니다.
3002번 포트에 배포한 다음, 도메인을 가리키도록 합니다.
그리고 3001번 포트의 프로세스를 종료시키면 됩니다 :)
CI-CD 환경을 쉘 스크립트를 이용해서 구축할 때도 이와 같은 방법을 사용할 수 있습니다.
# empty_port.sh
IS_ON_PORT_3001 = $(netstat -ntlp | grep :3001)
IS_ON_PORT_3002 = $(netstat -ntlp | grep :3002)
# 3001번 포트가 비었을 때...
if [ -z "$IS_ON_PORT_3001" ]
then
echo "3001 empty..."
# Action 1
# Action 2
fi
# 3002번 포트가 비었을 때...
if [ -z "$IS_ON_PORT_3002" ]
then
echo "3002 empty..."
# Action 1
# Action 2
fi
1. netstat
과 grep
명령어를 이용해서 포트 찾기
2. 포트 검색결과가 변수에 저장
3. 포트에 실행 중인 프로세스가 없으면 빈 값이 저장됨
4. 빈 값이 저장된 변수는 비어 있는 포트를 의미
5. 조건문 안에서 원하는 명령어를 실행
반응형