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