Systemd는 Gitlab-runner 및 수동 명령과 다르게 작동합니다.

Systemd는 Gitlab-runner 및 수동 명령과 다르게 작동합니다.

Systemd 서비스로 실행되는 Python 기반 tg 봇이 있습니다. 서비스 파일은 다음과 같습니다.

[Unit]
Description=Telegram ImageBot
After=syslog.target
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/home/gitlab-runner/image-bot
ExecStart=/usr/bin/python3 /home/gitlab-runner/image-bot/new_imagebot.py
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

또한 gitlab-ci 배포가 트리거될 때마다 설정을 수행하는 스크립트도 있습니다.

#!/bin/sh

echo "========= IMAGE BOT SETUP =========="

sudo rm -rf /home/gitlab-runner/image-bot

sudo cp -r . /home/gitlab-runner/image-bot

sudo cp ./deploy/imagebot.service /etc/systemd/system

echo "========= SYSTEMCTL SETUP =========="

sudo systemctl daemon-reload

sudo systemctl enable imagebot.service

sudo systemctl start imagebot.service

sudo systemctl status imagebot.service

Python 스크립트가 제대로 작동하려면 일부 디렉터리를 만들어야 합니다. 서비스를 수동으로 실행하면 문제가 없습니다. 그러나 systemctl start imagebot.servicegitlab-runner에서 실행하면 디렉터리가 생성되지 않고 봇이 충돌합니다. 내가 여기서 무엇을 놓치고 있는 걸까요? 시스템 서비스 시작은 사용자마다 어떻게 다릅니까?

관련 정보