![Systemd 与 Gitlab-runner 和手动命令的工作方式不同](https://linux22.com/image/226100/Systemd%20%E4%B8%8E%20Gitlab-runner%20%E5%92%8C%E6%89%8B%E5%8A%A8%E5%91%BD%E4%BB%A4%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F%E4%B8%8D%E5%90%8C.png)
我有一个基于 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 服务启动如何因用户而异?