Systemd 与 Gitlab-runner 和手动命令的工作方式不同

Systemd 与 Gitlab-runner 和手动命令的工作方式不同

我有一个基于 python 的 tg 机器人,它应该作为 Systemd 服务运行。服务文件如下。

[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 中运行,它不会创建任何目录 - 机器人会崩溃。我在这里缺少什么? systemd 服务启动如何因用户而异?

相关内容