250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 티스토리챌린지
    • 뉴스앱
    • 오블완

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    개발/리눅스

    Systemd 서비스 시작 문제 해결하기: 쉘스크립트로 프로세스 유지하는 방법

    2024. 11. 12. 08:01
    728x90
    반응형

    아래와 같이 서비스 유닛파일에서 쉡스크립트를 실행하게 작성하고 쉘스크립트에서는 톰캣 실행 및 로그를 출력하게 되어 있는 서비스를 실행할때 로그는 정상적으로 출력되는데 프로세스가 실행 안됬습니다.

    [Unit]
    Description=pothole Service
    After=network.target
    
    [Service]
    ExecStart=/home/user/startup.sh
    Restart=on-failure
    User=root
    Group=root
    
    [Install]
    WantedBy=multi-user.target

    해당 이유는 프로세스는 실행되었지만 systemd 서비스가 스크립트를 완료한 후 즉시 종료되기 때문입니다.

    일반적으로 systemd 서비스는 백그라운드에서 지속적으로 실행되는 프로세스(데몬)를 관리하는 데 사용되며, 단기 실행 스크립트를 사용해 시작만 하고 종료하는 형태라면 systemd에서 이를 ‘비활성(inactive)’ 상태로 표시합니다.

     

    해결 방법: Type을 forking으로 변경

    서비스 유닛 파일 수정
    서비스가 백그라운드에서 계속 실행되도록 Type을 forking으로 설정합니다. forking 설정은 startup.sh 스크립트가 새로운 프로세스를 포크할 때 주로 사용합니다. 유닛 파일의 예시는 다음과 같습니다.

    [Unit]
    Description=pothole Service
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/home/user/startup.sh
    Restart=on-failure
    User=root
    Group=root
    
    [Install]
    WantedBy=multi-user.target
    • Type=forking: 스크립트가 백그라운드에서 실행되도록 시스템에 알리며, 스크립트 내의 startup.sh에서 프로세스가 포크되어 독립적으로 실행되는 경우 사용합니다.

     

    서비스 유닛 파일을 수정 후 데몬 재로드 및 서비스 재시작을 하면 서비스가 시작된 후 프로세스가 실행되고 있는것을 확인할 수 있습니다.

     

    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > 리눅스' 카테고리의 다른 글

    [Ubuntu] 서버 설정  (0) 2024.12.16
    systemd 서비스 status=127 에러 해결 방법: 환경 변수 설정하기  (0) 2024.11.13
    리눅스 서비스 등록 에러 해결: code=exited, status=203/EXEC 문제 해결법  (0) 2024.11.11
    CentOS 부팅 오류 해결: 파티션 오류 수정 방법  (0) 2024.08.12
    [CentOS7] yum 명령어 오류 해결 (Could not resolve host: mirrorlist.centos.org; 알 수 없는 오류)  (4) 2024.07.03
      '개발/리눅스' 카테고리의 다른 글
      • [Ubuntu] 서버 설정
      • systemd 서비스 status=127 에러 해결 방법: 환경 변수 설정하기
      • 리눅스 서비스 등록 에러 해결: code=exited, status=203/EXEC 문제 해결법
      • CentOS 부팅 오류 해결: 파티션 오류 수정 방법
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바