리눅스 shell로 자동 배포 후 tomcat 자동 shutdown 되는 이슈 해결

    배포 shell 스크립트로 배포를 할때는 자동으로 tomcat이 shutdown되는 일이 있었는데 수동으로 한줄 한줄 스크립트를 실행시켜서 배포 할때는 자동으로 tomcat이 shutdown 되지가 않아 원인을 2달동안 못찾았다

     

    원인 파악 후 위 이슈가 생기려면 아래와 같은 조건이 필요하다

    1. 배포 스크립트에서 tomcat을 서비스로 실행시키지 않고 tomcat의 shutdown.sh, startup.sh 로 실행시킨다.

    2. 1번 조건에서 shutdown.sh, start.sh를 백그라운드로 실행시키지 않는다. (&, nohup 사용 안함)

    3. 2번 조건으로 tomcat을 start 한 후 마지막에 tail -f 로 로그를 확인한다

    4. tail -f 로 로그를 확인 하는 중에  ssh 접속 프로그램을 강제로 꺼버린다. (강제 session 종료)

     

    아래 배포 스크립트로 tomcat stop, start후 업데이트 할 파일 교체가 끝나고 start 한 후 tail -f 로 로그를 확인 하는 중에 ssh 접속 프로그램을 꺼버린다면 tomcat 이 자동으로 shutdown 돼 버린다.

    이유는 정확히 모르겠지만 강제 종료 했을때 shell이 정상적으로 실행이 안됐다고 판단해서 세션이 tomcat을 stop하는것 같다. 그래서 tail -f 걸어놓은 로그를 ctrl + c 해서 정상 종료하면 tomcat 이 stop 안된다.

    sh /data/apache/tomcat/shutdown.sh
    
    #파일 교체
    
    sh /data/apache/tomcat/startup.sh
    
    
    tail -f catalina.out

     

     

    tomcat이 자동으로 stop되는 것을 방지하려면 애초에 백그라운드에서 실행이 되어야 한다. 그러러면 서비스에 등록해서 실행을 시키던가. 아래처럼 nohup이나 & 로 실행을 시켜야 한다.

     

    nohup /data/apache/tomcat/shutdown.sh
    
    #파일 교체
    
    nohup /data/apache/tomcat/startup.sh
    
    
    tail -f catalina.out

    댓글

    Designed by JB FACTORY