리눅스 서비스 관리 방법 / systemctl 명령어 정리

서비스 파일 작성 방법

서비스 파일 생성

sudo vi /etc/systemd/system/서비스명.service

위와 같은 명령어로 서비스 파일을 생성할 수 있습니다.

스프링부트 프로젝트 실행 서비스 파일 예시

[Unit]
Description=프로젝트명 Application
After=network.target

[Service]
User=root # 서비스 실행 유저명
WorkingDirectory=/opt/프로젝트명
ExecStart=/usr/bin/java -Dspring.profiles.active=프로파일명 -jar /opt/프로젝트명/프로젝트명-GradleVersion명.jar
SuccessExitStatus=143
Restart=always # 실패 시 항상 재시작

[Install]
WantedBy=multi-user.target

Java로 스프링부트 프로젝트 jar 파일을 실행하는 서비스 파일 예시입니다.
ExecStart 옵션 앞에는 java 실행파일 경로 또는 심볼릭 링크를 적어주는 것이 좋습니다.

스프링부트 톰캣 서비스 작성 시 주의사항
service 파일에 작성한 서비스 실행 유저명이 로그 파일 소유자와 다르면,
로그 폴더 및 파일에 대해서 No such file or directory 또는 Permission denied 에러가 발생합니다.


서비스 등록 방법

서비스 등록 및 수정 적용

sudo systemctl daemon-reload

systemd가 /etc/systemd/system 폴더 하위 서비스 파일들 변경사항을 인식하도록 새로고침 합니다.


서비스 사용 방법

서비스 상태 확인

systemctl status 서비스명

서비스 시작

systemctl start 서비스명

서비스 실행 시 에러 확인 방법

journalctl -u 서비스명.service -n 1000 // 로그 100줄 보기
또는
journalctl -u 서비스명.service -f // 실시간 로그 보기

위 명령어를 통해 systemd로 실행한 서비스 로그 메시지를 확인할 수 있습니다.

서비스 정지

systemctl stop 서비스명

서비스 재시작

systemctl restart 서비스명

서비스 자동시작 설정

자동 시작 여부 확인

systemctl is-enabled 서비스명

자동 시작 설정

systemctl enable 서비스명

enable 해두면 재부팅 시마다 수동으로 시작하지 않아도 됩니다.

자동 시작 해제

systemctl disable 서비스명