ExecStart
는 Systemd 서비스 파일에서 서비스가 시작될 때 실행할 명령어를 지정하는 옵션입니다. Systemd는 리눅스에서 널리 사용되는 시스템 및 서비스 관리자이며, 서비스 파일은 /etc/systemd/system/
디렉토리에 위치하며 .service
확장자를 갖습니다.
ExecStart
를 포함한 전체적인 서비스 파일 설정 방법은 다음과 같습니다:
Bash 스크립트를 시스템 서비스로 등록하려면, systemd
를 사용하여 서비스를 설정할 수 있습니다. 다음은 bash 스크립트를 서비스로 등록하는 방법입니다.
1. Bash 스크립트 작성
먼저 실행하고자 하는 bash 스크립트를 작성합니다. 예를 들어, /usr/local/bin/my-script.sh
라는 위치에 아래와 같은 스크립트를 저장했다고 가정합니다:
#!/bin/bash
seep 10
실행 시 10초 동안 service가 active (running) 상태이었다가 10초 후 동작이 끝나면 loaded 상태로 변경 됩니다.
스크립트에 실행 권한을 부여합니다:
chmod +x /usr/local/bin/my-script.sh
2. 서비스 파일 생성
예를 들어, myservice.service
라는 파일을 /etc/systemd/system/
디렉토리에 생성합니다.
sudo nano /etc/systemd/system/myservice.service
3. 서비스 파일 구성: 다음과 같은 구조로 작성합니다.
[Unit]
Description=My Custom Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/mycommand --option value
Restart=on-failure
User=myuser
WorkingDirectory=/path/to/directory
[Install]
WantedBy=multi-user.target
각 섹션의 의미는 다음과 같습니다:
- [Unit]: 서비스에 대한 기본 정보를 설정하는 섹션입니다.
Description
: 서비스에 대한 설명입니다.After
: 특정 타겟이나 서비스가 시작된 후에 이 서비스가 시작되도록 설정합니다.
- [Service]: 서비스의 동작 방식을 정의합니다.
Type
: 서비스 유형을 지정합니다.simple
은 기본값으로,ExecStart
에서 지정한 명령이 바로 실행됩니다.ExecStart
: 서비스가 시작될 때 실행할 명령어입니다. 명령어의 전체 경로와 옵션을 지정해야 합니다.Restart
: 서비스가 실패했을 때 재시작할지 여부를 설정합니다. (on-failure
,always
등)User
: 서비스를 실행할 사용자 계정을 지정합니다.WorkingDirectory
: 서비스가 실행될 때 사용할 작업 디렉토리를 지정합니다.
- [Install]: 서비스가 어떤 타겟에서 활성화될지를 설정합니다.
WantedBy
: 이 서비스가 포함될 타겟을 지정합니다.multi-user.target
은 일반적으로 기본적인 다중 사용자 모드입니다.
4. 서비스 파일 적용
작성한 후, Systemd에 서비스 파일을 인식시키기 위해 다음 명령을 실행합니다.
sudo systemctl daemon-reload
5. 서비스 시작 및 활성화:
sudo systemctl start myservice
sudo systemctl enable myservice
6. 서비스 상태 확인
서비스가 제대로 실행되고 있는지 확인하려면:
sudo systemctl status my-script.service
active (running) : 현재 실행 되어 있는 상태입니다.
loaded : 실행에는 문제없고 실행이 끝난 상태입니다.
이제 이 스크립트는 시스템이 부팅될 때 자동으로 실행됩니다.
'Linux Unix' 카테고리의 다른 글
[ Linux ] ufw, nmap, iptables - 특정 포트가 방화벽에 막혀 있는 지 확인하기 (0) | 2024.11.05 |
---|---|
[ Linux ] service 등록 (2) - 서비스 파일 옵션 알아보기 (2) | 2024.10.21 |
[ Linux ] service 등록 - bash script를 서비스로 등록하기 (0) | 2024.10.21 |
[ 리눅스 / Linux ] 네임스페이스, Cgroup을 알아보기 (0) | 2024.07.02 |
[ 리눅스 / Linux ] 리눅스 ABI란? (0) | 2024.07.02 |