[Linux] 데몬 실행 과정 알아보기

post-thumbnail

java 데몬 프로그램이 리눅스환경에서 실행되는 과정을 정리해봤습니다.

  • java : 1.8.0
  • jdk : openjdk 1.8.0
  • 리눅스 : CentOS Linux 7

1. java프로그램 개발

Java로 데몬 프로그램을 개발합니다. 저는 netty프레임워크를 사용하였습니다.

서버 프레임워크 Netty란? 비동기 이벤트 기반의 네트워크 애플리케이션을 개발하기 위한 고성능 프레임워크로, 다양한 네트워크 프로토콜을 지원합니다.

  • Netty 프레임워크를 이용한 프로그램 개발 & 서버 소켓 및 핸들러 설정
    Netty를 사용하여 데몬 프로그램을 개발합니다.
    서버 소켓을 설정하고, 클라이언트 요청에 대한 핸들러(비즈니스 로직을 처리)를 구현합니다.

2. 데몬 프로그램을 실행하는 쉘 스크립트 작성

nohup java -server -Xms512m -Xmx1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -jar /home/..root../javaProgramDaemon.jar 1> /dev/null 2>&1 &
  1. nohup : 프로그램을 백그라운드에서 실행하고, 터미널 세션이 종료되어도 프로그램이 계속 실행되도록 하는 명령어입니다.
  2. java : Java 가상 머신을 실행하는 명령어입니다.
    -server : 서버 모드로 JVM을 실행합니다.
    -Xms512m : 초기 힙 크기를 512MB로 설정합니다.
    -Xmx1024m : 최대 힙 크기를 1024MB로 설정합니다.
    -XX:+UseG1GC : G1(Garbage First) 가비지 컬렉터를 사용합니다.
    -XX:MaxGCPauseMillis=200 : 가비지 컬렉션 중 최대 허용 중지 시간을 200밀리초로 설정합니다.
    -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 : HTTPS 연결에 사용할 프로토콜을 설정합니다.
  3. -jar /home/..root../javaProgramDaemon.jar : 지정된 JAR 파일을 실행합니다.
  4. 1> /dev/null : 표준 출력을 /dev/null로 리다이렉션하여 출력을 무시합니다.
  5. 2>&1 : 표준 에러를 표준 출력으로 리다이렉션합니다.
  6. & : 프로그램을 백그라운드에서 실행합니다.

3. 프로세스 실행

java로 만든 데몬 프로그램을 리눅스 서버에서 실행하려면, 기본적으로 JVM이 설치되어 있어야합니다. java 프로그램을 운영하는 서버라면 기본적으로 깔려있을테니 설치 과정은 생략하도록 하겠습니다.

  1. 1번에서 개발한 java 프로그램을 JAR 파일로 패키징 합니다.

    JAR(Java Archive, 자바 아카이브)? 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이다.

  2. JAR파일을 리눅스에 업로드 후 쉘 스크립트 옵션을 상황에 맞게 수정한다.
  3. 쉘스크립트 실행

정리

제가 처음 접했을 때 연결이 안되거나 어려웠던 부분을 기억하며 최대한 단순하게 과정을 나열하였습니다.
다시 정리하면서도 각 단계별에서 주의해야할 점과 고려해야할 부분들을 다시 한번 살펴보고 이해할 수 있는 과정이었습니다.

profile
숲을 보고 나무도 보자.

0개의 댓글