[졸업프로젝트]리눅스 CentOS7 부팅시 쉘 파일 실행

shane·2021년 5월 3일
0

서버가 죽은 상황

다른 일을 하던 중, 앱팀장님한테 카톡이 왔다.
앞뒤 말 다 자르고 정리하자면 서버가 죽은거 같으니 확인 후 고쳐달라는 것이었다. 처음 이 상황을 들었을 때, 어제 상황부터 곰곰히 생각을 하였다.
분명히 어제 서버의 master 브랜치로 PR을 한 후, 배포를 한 후에 Postman 프로그램을 이용하여 테스트했을 당시에는 멀쩡히 작동했다는 것을 기억해냈다. 이후, 가장 먼저 체크 해본 것은 브라우저로 직접 서버의 8080포트로 접근을 해봤는데, 역시나... 어림도 없다. 작동하지 않았다.
그 다음으로는 혹시나 aws의 ec2 인스턴스가 죽었을까 싶어 aws 사이트에 들어가 인스턴스의 상태를 확인해보니 멀쩡히 작동 중이었고, PuTTY 프로그램으로 서버에 접속해보니 멀쩡히 잘 되었다.

해결

PuTTY로 멀쩡히 서버가 작동하고 있는 것을 확인했으니, 리눅스 상에서 현재 8080포트가 Spring boot 프로그램에 의해 사용되고 있는지 확인을 해야 했다.

netstat -ntlp | grep :8080

위와 같이 명령어를 입력하면 현재 8080포트가 이용중인지 확인을 할 수 있다.
역시나지만 입력하니 아무 것도 작동하지 않고 있었다.
결국은 sh 명령어를 이용하여 spring boot jar파일을 실행시키는 서버용 스크립트를 새로 실행시켜 spring 서버가 작동하게 했다.

재발방지 방법

일단은 왜 spring 서버가 죽었는지는 모르겠지만 예상을 해보면 무엇인가 모종의 이유로 리눅스 서버가 재부팅되어 프로세스가 죽었다고 판단하여, 재발의 방책으로 재부팅시 spring 서버가 실행될 수 있도록, 서버용 스크립트가 실행되도록 설정하였다.

리눅스 부팅 시 자동실행 명령어나 스크립트는 /etc/rc.d/rc.local에 원하는 스크립트의 위치 및 이름을 적어두면 된다. 다음과 같이 작성하였다.

또한, 혹시라도 실행이 안될 경우, 다음과 같이 권한을 주면 된다.

chmod u+x /etc/rc.d/rc.local
profile
개발 관련 소통을 좋아하는 백엔드 개발자입니다.

0개의 댓글