我有一个用户test
。
test
有一个 systemd 用户服务,位于/home/test/.config/systemd/user/testserv.service
服务文件包含,
[Unit]
Description=Test Service
After=network.target
[Service]
WorkingDirectory=/home/test/test_website
ExecStart=/home/test/venv/bin/gunicorn \
--access-logfile \
- \
--workers 2 \
--bind unix:/home/test/test_website/test_website.sock run:app
[Install]
WantedBy=multi-user.target
我想在 cron 中每 5 分钟重启一次此服务。
为此,我创建了一个脚本/home/test/test.sh
#!/bin/bash
PATH="/home/test/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
HOME="/home/test"
SHELL="/bin/bash"
exec &>> log.txt
systemctl --user restart testserv.service
test
并从crontab中运行它,如下所示,
* * * * * /bin/bash /home/test/test.sh
但我一直收到这个错误,而且我无法找出原因。
Failed to connect to bus: No such file or directory
有什么办法可以修复这个问题吗?
答案1
在重新启动服务之前尝试添加以下行:
XDG_RUNTIME_DIR=/run/user/$(id -u)
DBUS_SESSION_BUS_ADDRESS=unix:path=${XDG_RUNTIME_DIR}/bus
export DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR