OBEX python как сервис systemd - ошибка X11 - PullRequest
0 голосов
/ 13 марта 2019

Ниже приведен очень простой пример сценария для отправки изображения через службу OBEX (obexctl)

import subprocess
import pexpect
import time

subprocess.run(['export $(dbus-launch)'], shell=True)
subprocess.run(['/usr/lib/bluetooth/obexd &'], shell=True)
obexchild = pexpect.spawn("obexctl", encoding='utf-8', echo=False)

obexchild.send("connect " + "AC:37:43:7B:32:50" + "\n")
time.sleep(1)
obexchild.send("send " + "/test_image.jpg" + "\n")

Это работает, когда я запускаю его из командной строки, однако, если язапустите скрипт как systemd сервис, подобный этому:

[Unit]
Description=Serial Test
After=multi-user.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/python3.5 /home/x_user/serial_test.py

[Install]
WantedBy=multi-user.target

Мое изображение не передается.Я проверил service, используя systemctl status serial_test.service, и получаю это:

● serial_test.service - Serial Test
   Loaded: loaded (/lib/systemd/system/serial_test.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-03-12 20:19:17 UTC; 20min ago
 Main PID: 554 (python3.5)
   CGroup: /system.slice/serial_test.service
           ├─554 /usr/bin/python3.5 /home/x_user/serial_test.py
           ├─742 /usr/bin/bluetoothctl
           ├─868 /usr/bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
           └─872 /usr/bin/obexctl

Mar 12 20:19:17 var-som-mx6 systemd[1]: Started Serial Test.
Mar 12 20:19:31 var-som-mx6 python3.5[554]: Serial Port service registered
Mar 12 20:19:31 var-som-mx6 obexd[871]: OBEX daemon 5.43
Mar 12 20:19:31 var-som-mx6 obexd[871]: manager_init failed
Mar 12 20:19:31 var-som-mx6 python3.5[554]: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11

Что я понимаю, потому что он запускается без DISPLAY.

Несколько вещей, которые япробовал systemctl --user set-environment DISPLAY=:0

Установка User=root с или без этой строки в service Я получаю ту же проблему.

Импорт среды systemctl --user import-environment

...