同様の質問に this answer を使用して、ユーザーレベルのサービスを設定しようとしています。必要なファイルを作成して再起動しました。
「Dバス接続を取得できませんでした:接続が拒否されました」のときに「Dバス接続を取得できませんでした:アクセス許可が拒否されました」というメッセージが表示されたため、進行中ですが、どのオブジェクトかわからないために困惑しています(ファイル?ソケット?)にアクセスしようとしているため、現在の権限を確認することもできません。何か案は?
これまでのところ、私は追加しました:
_loginctl enable-linger userservice
_
_[Unit]
Description=D-Bus User Message Bus
Requires=dbus.socket
[Service]
ExecStart=/usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation
ExecReload=/usr/bin/dbus-send --print-reply --session --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig
[Install]
Also=dbus.socket
_
_[Unit]
Description=D-Bus User Message Bus Socket
[Socket]
ListenStream=%t/bus
ExecStartPost=-/bin/systemctl --user set-environment DBUS_SESSION_BUS_ADDRESS=unix:path=%t/bus
[Install]
WantedBy=sockets.target
Also=dbus.service
_
_[Unit]
Description=Test user-level service
[Service]
Type=dbus
BusName=com.wtf.service
ExecStart=/home/userservice/userservice.py
Restart=on-failure
[Install]
WantedBy=default.target
_
他の場所にリンクを追加していません...
失敗させるには:
_systemctl --user status
_
2018-10-25を編集:
_.bashrc
_にexport XDG_RUNTIME_DIR=/run/user/$(id -u)
を追加しました。変数が設定され、_Failed to get D-us connection: no such file or directory
_が得られます。奇妙なことに、_man systemctl
_も_systemctl --help
_も_--user
_オプションに言及しておらず、どちらも_--system
_に言及しており、これがデフォルトであることを指定しています(他のオプションは何ですか)。
SELinuxでのRHEL 7.4の使用(_systemd 219
_によって報告された_systemctl --version
_を使用)。
そのため、ユーザーがログインしたときにXDG_RUNTIME_DIR
環境変数が正しく設定されない、またはまったく設定されないため、ユーザーのD-Busにアクセスできないという長期にわたる問題があります。これは、ユーザーがローカルのグラフィカルコンソール以外の方法でログインしたときに発生します。
これを回避するには、ユーザーの$HOME/.bashrc
に追加します。
export XDG_RUNTIME_DIR=/run/user/$(id -u)
次に、ログアウトして再度ログインします。