리눅스 서비스 관리 방법 / 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 서비스명