从 cron 内部重新启动 systemd 用户服务

从 cron 内部重新启动 systemd 用户服务

我有一个用户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

在此处找到:https://unix.stackexchange.com/a/474440

相关内容