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
반응형
'개발 > 리눅스' 카테고리의 다른 글
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 |
[CentOS7] [Spring Boot] [WebSocket] WebSocket Server 연결안되는 현상 (0) | 2024.06.13 |