Systemd 항목 만들기

Systemd 항목 만들기

저는 Python 스크립트를 사용하여 데이터를 수집하는 로거를 실행하고 있습니다. 현재 tmux를 사용하여 SSH 터널을 분리하고 닫을 수 있습니다. 시스템이 시작될 때 시작되기를 원합니다.

나는 팔로우했다이 조리법엄밀히 말하면 샘플 Python 스크립트를 삽입하는 대신 내 스크립트를 삽입한 것뿐입니다. 그 외에는 스크립트와 디렉터리 이름 등까지 정확하게 따릅니다.

레시피는 다음과 같습니다(외부 참조가 손실될 수 있으므로).

Systemd 항목 만들기

sudo nano /etc/systemd/system/myapp.service
[Unit]
# After=network.service
Description=My App

[Service]
Type=simple
# WorkingDirectory=/code/python/myapp
ExecStart=/code/scripts/myapp.sh
# User=do-user

[Install]
WantedBy=multi-user.target
# WantedBy=default.target

Bash 스크립트 만들기

nano /code/scripts/myapp.sh
#!/bin/bash

# cd /code/python/myapp python3 /code/python/myapp/run.py >> /code/logs/myapp.log 2>&1 mkdir /code/logs

Python 스크립트 만들기

nano /code/python/myapp/run.py
import signal import time import datetime

is_shutdown = False

def stop(sig, frame):   print(f"SIGTERM at {datetime.datetime.now()}") global is_shutdown   is_shutdown = True

def ignore(sig, frsma):   print(f"SIGHUP at {datetime.datetime.now()}")

signal.signal(signal.SIGTERM, stop) signal.signal(signal.SIGHUP, ignore)

print(f"START at {datetime.datetime.now()}")

while not is_shutdown:   print('.', end='', flush=True)   time.sleep(1)

print(f"END at {datetime.datetime.now()}")

테스트 시스템

파일 권한 설정

sudo chmod 744 /code/scripts/myapp.sh
sudo chmod 664 /etc/systemd/system/myapp.service

서비스 활성화

sudo systemctl daemon-reload
sudo systemctl enable myapp.service

테스트 서비스

sudo systemctl start myapp.service

상태 확인

sudo systemctl start status.service

로그 확인

tail -f /code/logs/myapp.log

그러나 서비스를 시작하려고 하면 다음 오류가 발생합니다.

$ sudo chmod 744 /code/scripts/myapp.sh
$ sudo chmod 664 /etc/systemd/system/myapp.service
$ sudo systemctl daemon-reload
$ sudo systemctl enable myapp.service
$ sudo systemctl start myapp.service
$ sudo systemctl start status.service
Failed to start status.service: Unit status.service not found.
$ tail -f /code/logs/myapp.log
...

에 있는 로그가 /code/logs/myapp.log비어 있습니다. 이전 시도에서는 로그에 모듈 가져오기 오류가 포함되어 있었습니다. 스크립트를 약간 변경했는데 이후에도 로그가 여전히 비어 있습니다.

로거를 실행하는 에지 장치에서 사용 중인 OS는 다음과 같습니다.

우분투 18.04.5 LTS(GNU/Linux 4.15.0-147-일반 x86_64)

내가 뭘 잘못하고 있는지 아시나요?

관련 정보