es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No puedo ver mi objeto de dbus cuando el programa se ejecuta desde el servicio de systemctl.

Tengo una aplicación de C++ que transmite un objeto y sus métodos en el dbus. Intento ejecutar este programa al inicio con el siguiente archivo de servicio:

[Unit]
Descripción=Ejecución del programa dbus
After=network.target

[Service]
Type=simple
ExecStart=/home/my_name/Documents/dbus/build/my_app
StandardOutput=console+journal
StandardError=console+journal

[Install]
WantedBy=multi-user.target

Después de recargar:

systemctl daemon-reload

y ejecutarlo:

sudo systemctl start my_service.service

No obtengo ningún error en el registro, pero no puedo ver nada en el dbus (ejecutando d-feet y buscando mi objeto, no encuentro nada)

Ejecutar exactamente la misma línea de comando ExecStart:

/home/my_name/Documents/dbus/build/my_app

en la consola funciona bien.

¿Qué me estoy perdiendo? ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que el demonio dbus no esté completamente inicializado cuando el servicio se inicia. Puede agregar el comando dbus-launch antes de ExecStart para asegurarse de que el bus de sesión dbus se configure correctamente antes de iniciar la aplicación:

    [Unit]
    Description=Ejecutando programa dbus
    After=network.target
    
    [Service]
    Type=simple
    ExecStartPre=/usr/bin/dbus-launch
    ExecStart=/home/mi_nombre/Documentos/dbus/build/mi_aplicacion
    StandardOutput=console+journal
    StandardError=console+journal
    
    [Install]
    WantedBy=multi-user.target
    

    Después de agregar esto al archivo de servicio, recargue systemd con systemctl daemon-reload y luego inicie el servicio con systemctl start my_service.service.

Comments are closed.