?
사용자

systemd로 서비스 자동 시작/중지/재시작 설정 가이드

Linux 시스템에서 systemd를 사용하여 서비스의 자동 시작, 중지, 재시작을 설정하는 방법을 안내합니다. 부팅 시 자동으로 실행되는 서비스를 관리하고자 할 때 유용합니다.

#systemd#service#linux#automation#system administration
recipe.md

systemd란 무엇인가?

systemd는 Linux 시스템에서 사용되는 시스템 및 서비스 관리자입니다. 시스템 부팅 과정을 관리하고, 서비스(데몬)의 시작, 중지, 재시작, 상태 확인 등을 담당합니다. 기존의 SysVinit이나 Upstart를 대체하며 현대 Linux 배포판에서 표준으로 사용되고 있습니다.

systemd를 언제, 왜 사용하는가?

  • 자동 시작: 시스템 부팅 시 특정 서비스가 자동으로 실행되도록 설정할 때 사용합니다.
  • 서비스 관리: 실행 중인 서비스의 상태를 확인하고, 필요에 따라 수동으로 시작, 중지, 재시작할 때 사용합니다.
  • 의존성 관리: 여러 서비스 간의 실행 순서나 의존성을 정의하여 안정적인 서비스 운영을 보장할 때 사용합니다.
  • 리소스 관리: 각 서비스가 사용할 수 있는 CPU, 메모리 등의 리소스를 제한하고 관리할 때 사용합니다.

systemd 서비스 파일(.service) 이해하기

systemd는 .service 확장자를 가진 유닛 파일을 사용하여 서비스의 동작을 정의합니다. 이 파일들은 주로 /etc/systemd/system/ 디렉토리에 위치합니다. 주요 섹션은 다음과 같습니다:

  • [Unit]: 서비스에 대한 메타데이터를 정의합니다. Description, After (선행 서비스), Wants (선택적 의존성) 등의 지시어를 포함합니다.
  • [Service]: 서비스 자체의 동작을 정의합니다. Type (서비스 실행 방식), ExecStart (시작 명령어), ExecStop (중지 명령어), Restart (재시작 정책) 등의 지시어를 포함합니다.
  • [Install]: 서비스의 설치 및 활성화 관련 정보를 정의합니다. WantedBy (어떤 타겟에서 이 서비스를 필요로 하는지) 지시어를 포함합니다. 주로 multi-user.target이 사용됩니다.

systemd 서비스 관리 기본 명령어

systemd 서비스를 관리하기 위해 systemctl 명령어를 사용합니다. 다음은 가장 기본적인 명령어들입니다.

1. 서비스 상태 확인:

systemctl status <서비스명>.service

2. 서비스 시작:

sudo systemctl start <서비스명>.service

3. 서비스 중지:

sudo systemctl stop <서비스명>.service

4. 서비스 재시작:

sudo systemctl restart <서비스명>.service

5. 서비스 다시 로드 (설정 변경 후):

sudo systemctl daemon-reload

6. 서비스 활성화 (부팅 시 자동 시작):

sudo systemctl enable <서비스명>.service

7. 서비스 비활성화 (부팅 시 자동 시작 방지):

sudo systemctl disable <서비스명>.service

8. 활성화 상태 확인:

systemctl is-enabled <서비스명>.service

예시: 간단한 웹 서버 서비스 설정

mywebapp.service 라는 이름의 간단한 웹 서버 서비스를 systemd로 관리한다고 가정해 봅시다.

1. 서비스 파일 생성 (/etc/systemd/system/mywebapp.service):

[Unit]
Description=My Simple Web Application
After=network.target

[Service]
ExecStart=/usr/local/bin/mywebapp
Restart=on-failure
User=myuser
Group=myuser

[Install]
WantedBy=multi-user.target
  • Description: 서비스에 대한 설명입니다.
  • After=network.target: 네트워크가 준비된 후에 이 서비스가 시작되도록 합니다.
  • ExecStart: 웹 서버 실행 파일의 경로입니다.
  • Restart=on-failure: 서비스가 비정상 종료될 경우 자동으로 재시작합니다.
  • User, Group: 서비스를 실행할 사용자 및 그룹을 지정합니다.
  • WantedBy=multi-user.target: 시스템이 다중 사용자 모드(일반적인 서버 환경)로 부팅될 때 이 서비스가 활성화되도록 합니다.

2. systemd 데몬 재로드: 설정 파일을 변경했으므로 systemd에게 이를 알립니다.

sudo systemctl daemon-reload

3. 서비스 시작 및 활성화:

  • 시작:
    sudo systemctl start mywebapp.service
    
  • 부팅 시 자동 시작 설정:
    sudo systemctl enable mywebapp.service
    

4. 서비스 상태 확인:

systemctl status mywebapp.service

주의사항

  • 권한: 서비스 파일을 수정하거나 systemctl 명령어를 실행할 때는 일반적으로 root 권한(sudo)이 필요합니다.
  • 경로: ExecStart에 지정하는 실행 파일의 경로는 정확해야 합니다.
  • 재시작 정책: Restart 옵션은 no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, always 등이 있습니다. 서비스의 특성에 맞게 설정해야 합니다.
  • 로그 확인: 서비스 실행 중 문제가 발생하면 journalctl -u <서비스명>.service 명령어를 사용하여 로그를 확인하는 것이 중요합니다.

systemd는 강력한 시스템 관리 도구이므로, 각 지시어의 의미를 정확히 이해하고 사용하는 것이 안정적인 서비스 운영에 필수적입니다.

0
스크랩
38
좋아요
0
댓글