у меня есть пользовательский тест
.
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
Я хотел бы перезапустить это обслуживание каждые 5 минут из cron.
Для этого я создал сценарий /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
и запустил его из crontab test
, как,
* * * * * /bin/bash /home/test/test.sh
Но я продолжаю получать это ошибка, и я не могу понять причину.
Failed to connect to bus: No such file or directory
Есть идеи, как это исправить?
Попробуйте добавить эти строки перед перезапуском службы:
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