我有一个基于 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 服务启动如何因用户而异?