Linux의 systemd 서비스로 부팅시 자동 실행하기

 해당 글은 'Docker , GitHub Action을 이용해서 EC2(AWS)에 자동 배포하기 - React사용' 글에서 추가된 내용입니다. 


해당 글에서 run.sh파일을 부팅후 항상 구동하기 위해서 systemd 서비스를 사용하는 것입니다.


1. systmd 서비스 파일을 생성

- vim 에디터로 경로에 파일을 생성합니다.

$ sudo vim /etc/systemd/system/github-runner.service


2. 아래와 같은 텍스트를 작성

[Unit]

Description=GitHub Actions Runner

After=network.target


[Service]

Type=simple

User=ubuntu

WorkingDirectory=/home/ubuntu/actions-runner

ExecStart=/home/ubuntu/actions-runner/run.sh

Restart=always


[Install]

WantedBy=multi-user.target


위의 내용중에서 Service의 항목 설명은 아래와 같다.

Type : 서비스 타입. 위에서는 간단으로 선택

User : 해당 서비스를 사용할 유저. 

WorkingDirectory : 구동 디렉토리(절대경로를 사용해야 한다.)

ExecStart : sh파일을 실행할 경로(절대경로를 사용해야한다.)

Restart : 시스텡이 재시작 되면 해당 서비스도 실행 될수 있도록 'always' 셋팅


3. 서비스 적용 및 활성화

이 명령어는 systemd 데몬을 다시 로드하는 데 사용됩니다. 주로 서비스 파일을 수정한 후에 실행해야 합니다.

  • 목적: 새로운 서비스 파일이나 변경된 서비스 파일을 systemd 데몬이 인식하도록 합니다.
  • 상황: 서비스 파일을 추가하거나 변경한 후에 실행합니다.
  • 동작: systemd 데몬은 서비스 파일을 다시 읽고, 변경된 설정을 적용합니다.

$ sudo systemctl daemon-reload


이 명령어는 지정된 서비스를 시작하는 데 사용됩니다. 여기서는 github-runner 서비스를 시작합니다.

  • 목적: 지정된 서비스를 즉시 시작합니다.
  • 상황: 서비스를 처음 시작하거나, 중지된 서비스를 다시 시작할 때 사용합니다.
  • 동작: systemd 데몬은 github-runner 서비스 파일을 읽고, 해당 서비스를 실행합니다.

$ sudo systemctl start github-runner


이 명령어는 지정된 서비스를 부팅 시 자동으로 시작하도록 설정합니다.

  • 목적: 지정된 서비스가 시스템 부팅 시 자동으로 시작되도록 설정합니다.
  • 상황: 서비스가 시스템이 시작될 때 자동으로 실행되도록 설정하고 싶을 때 사용합니다.
  • 동작: systemd 데몬은 서비스가 자동으로 시작되도록 부팅 시 실행 목록에 추가합니다.

$ sudo systemctl enable github-runner


마지막으로 해당 sh파일이 제대로 systemd에서 동작하는지 확인하기 위해서 아래 명령어를 터미널에 작성한다.

$ sudo systemctl status github-runner




Active가 running상태이다. 이는 정상적인 상태이다. 만약 다른 상태면 셋팅방법을 다시 확인해야한다.







댓글

이 블로그의 인기 게시물

DAQ로 전압 측정하기-2

Nest JS URL에 있는 쿼리(Query) 읽기

appendChild를 이용하여
  • 늘리기_JavaScript_2번