systemctl 작성 방법

황인호·2023년 7월 14일
0

Linux 는 OS 가 부팅되면서 여러가지 데몬들이 실행된다.

데몬이란 사용자가 직접적으로 제어하지 않고, 백그라운드에서 여러 작업을 하는 프로그램이며 이러한 프로그램들은 사용자의 직접적인 상호작용 없이도 시스템의 핵심 기능을 지원하거나 다른프로그램에 서비스를 제공합니다.

systemctl 이란?

systemctl 은 systemd 시스템과 서비스 매니저의 기본 명령줄 도구로 이 도구를 사용하여 시스템의 상태를 검사하고, 시스템 서비스를 관리하고, 시스템 서비를 관리하고 , 서비스를 시작 / 중지 / 재시작하며 , 서비스를 활성화 / 비활성화 할수 있습니다.

Linux 에는 autoStart 가 있다
autoStart는 시스템이 부팅될 때 필요한 서비스나 애플리케이션을 자동으로 실행 할 수 있게 한다.

autoStart 가 있는데 systemctl 에 서비스를 만들고 실행하는 이유는 뭘까?

autoStart 는 부팅될때 단 한번만 실행된다.

systemctl 은 사용자가 서비스를 중지하지않으면 갑자기 서비스가 종료되었을때 이를 확인하고 자동으로 다시 서비스를 실행한다.

부팅될때 한번만 실행해도 되는 작업은 autoStart 에 작성하고
그렇지 않고 계속 실행되어야하는 서비스인 경우 systemctl 에 service 를 작성하고 활성화 시킨 후 실행하는게 맞다.

systemctl 에 service 를 작성하는 방법에 대해서 기록하려고한다.

먼저 파일을 만들어야한다.
1. vim 또는 nano 를 설치해야한다

sudo apt update

sudo apt install vim

sudo apt install nano

  1. 파일을 생성한다.

sudo nano /etc/systemd/system/['만들고자하는 서비스명'].service

만약에 내가 실행하려고하는 서비스의 이름이 windows 라면 아래와 같이 입력하면된다.

sudo nano /etc/systemd/system/windows.service

  1. 내용을 입력
[Unit]
Description=Windows Service Start
After=network.target

[Service]
ExecStart=/home/[사용자 이름]/windows
Restart=always
RestartSec=10
WorkingDirectory=/home/[사용자 이름]
Environment='DISPLAY=:0'

[Install]
WantedBy=multi-user.target
  • [Unit] 섹션 : 서비스의 유닛 메타데이터와 종속성을 지정한다.

  • Description : 서비스에 대한 간략한 설명이다.

  • After : 해당 서비스가 시작되기 전에 활성화 되어야 하는 서비스나 유닛을 지정한다.
    (network.target 이라 적었는데 이는 네트워크를 사용하는 경우 서비스가 실행되기 전에 네트워크를 먼저 설정하도록 한다는 뜻으로 인터넷이 연결된 후에 서비스를 실행하겠다는 내용이다.

  • [Service] 섹션 : 실행 파일과 관련된 옵션을 지정한다.

  • ExecStart : 서비스를 시작할 때 실행되는 명령어 실행파일을 지정한다.

  • Restart : 서비스가 실패하거나 종료된 경우 어떻게 할지에 대한 설정으로 always 로 설정하면 서비스가 종료되면 언제나 다시 시작된다는 뜻이다.

  • RestartSec : 10으로 설정한것은 서비스가 종료되면 10초 뒤에 다시 시작하겠다는 뜻이다.

  • WorkDirectory : 서비스가 실행되는 작업 디렉토리를 지정한다. 지정하지 않으면 root("/") 디렉토리를 사용한다.

  • Environment : 서비스가 실행될 때 적용되는 환경 변수를 설정한다.

  • WantedBy : multi-user.target는 여러 사용자가 시스템에 로그인하고 대화형(non-graphical) 멀티유저 모드에서 서비스를 사용할 수 있게 하는 대상 유닛입니다.

  1. 서비스 활성화

sudo systemctl enable windows.service

  1. 서비스 시작

sudo systemctl start windows.service

  1. 서비스 상태 확인

sudo systemctl status windows.service

이렇게 한다음 재부팅했을때 잘 실행된다면 끝이다.

잘 실행되었는지 확인하는 방법은 아래의 명령어를 입력하면된다.

sudo systemctl status windows.service

profile
성장중인 백엔드 개발자!!

0개의 댓글