Я только что закончил установку и настройку systemd на моей системе arch-linux (2012.09.07). Я удалил initscripts
(и удалил конфигурационные файлы).
то, что я хочу сделать, это создать службу, которая может быть запущена и остановлена пользователем, не являющимся root. Служба должна запустить сеанс отсоединенного экрана под управлением rtorrent. Однако я хочу, чтобы каждый пользователь в системе, который установил эту службу для запуска (включен), запускал конкретный экземпляр специально для них. Как кто-нибудь займется этим?
Я помню, как читал, что systemd поддерживает пользовательские экземпляры служб, однако я не смог найти никакой информации о том, как это настроить, или связано ли это с тем, что я ищу.
служебный файл, который я использовал для system:
[Unit]
Description=rTorrent
[Service]
Type=forking
ExecStart=/usr/bin/screen -d -m -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
обновить#1:
после прочтения man-страницы здесь и здесь, я понимаю, как systemd работает немного лучше. В частности, что с помощью User=
и WorkingDirectory=
параметры позволяют запускать службу в сеансе пользователя. Однако вопрос все равно остается, что пользователь сам не может start
,stop
,enable
или disable
сервис. В Доступ запрещен ошибка выдается systemctl
.
обновить#2:
во-первых, для упрощения и лучшего использования функции сеанса пользователя systemd (все еще несколько неполной), я использовал единицы сеанса пользователя sofar и последовал его совету конфигурации.
кажется, что в текущей версии DBus (1.6.4-1) есть ошибка, при которой не устанавливается переменная окружения DBUS_SESSION_BUS_ADDRESS
значение с помощью systemctl --user
командные ошибки с:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
переменная должна выглядеть так:
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/USERUID/dbus/user_bus_socket"
здесь USERUID должен быть UID данного пользователя.