Acabei de desenvolver um cliente dbus, escrito em Python, para mostrar uma notificação de área de trabalho quando recebe uma mensagem de um serviço dbus, que é iniciado por outro usuário.
O código do cliente dbus está aqui:
#!/usr/bin/python3
from gi.repository import Gtk
from gi.repository import Notify
import dbus
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
def msg_handler(*args,**keywords):
try:
#show notification to desktop
Notify.init('Pendrive Reminder')
notify = Notify.Notification.new('Pendrive Reminder', 'Shutdown lock enabled. Disconnect pendrive to enable shutdown')
notify.show()
except:
pass
bus.add_signal_receiver(handler_function=msg_handler, dbus_interface='org.preminder', path_keyword='path')
Gtk.main()
Agora, quero iniciar o cliente dbus a partir de um script. Mas eu preciso que esse cliente dbus não morra quando o script terminar.
Além disso, eu preciso que o cliente dbus seja lançado como um usuário específico (não raiz). O script será executado como root.
Eu tentei com isso:
nohup su user -c '/usr/bin/pendrive-reminder/client.py' &
Mas agora o script continua bloqueado depois de terminar seus comandos, mostra como processo "extinto". Então, preciso que meu script termine depois de lançar o cliente dbus
Como posso resolver isso?