Я строю обычай dbus
сервис для своих собственных требований и хочу, чтобы он запускался автоматически, когда кому-то это нужно. Для этой цели я создал .service
файл как этотDBus .service file missing
[D-Bus Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser
Здесь я просто изменил реальное имя сервиса и исполняемым, но это не главное. Я дважды проверял реальные имена - он точно соответствует. Я поместил этот файл под именем com.mycompany.servicename.service в папку/usr/share/dbus-1/services (я использую Ubuntu 11.10) Исполняемый файл имеет x
разрешения для всех. А вот проблема - когда я пытаюсь запустить клиент, который выполняет
bus = dbus.SessionBus()
bus.get_object('com.mycompany.servicename','/path/to/object')
Я получаю dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name com.mycompany.servicename was not provided by any .service files
объект с путем '/path/to/object'
зарегистрирован сразу после запуска службы. Я просто не понимаю, почему dbus
не может найти мой файл .service
. Может, я что-то упустил? Есть идеи?
Редактировать Мне удалось автоматически запустить D-BUS мой сценарий. Раздел .service
файла должен быть назван [D-BUS Service]
вместо [D-Bus service]
Где вы размещаете свой файл .service? Страница man для dbus-демона относится к XDG Base Dir Spec, и этот стажер, похоже, предлагает вам поместить его в ~/.local/share (см. Http://standards.freedesktop.org/basedir-spec/latest/ ar01s03.html) –
К сожалению, нет никаких доказательств других файлов '.service', которые предоставляют' session buses', но в то же время их много в папке, о которой я упоминал ранее (/ usr/share/dbus-1/Сервисы). Имя папки, которую я получил [здесь] (http://techbase.kde.org/Development/Tutorials/D-Bus/Autostart_Services) – pss
@pss, вы должны создать ответ и принять его сами! –