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で実行すると、ディレクトリが作成されず、ボットがクラッシュします。私がここで何を見逃しているのでしょうか?システムサービスの起動はユーザーごとにどう違いますか?

ベストアンサー1

おすすめ記事