Sto provando a scrivere uno script bash che avvierà un programma (konsole) e invierà messaggi dbus. Qui è il mio esperimentomapping pid ai numeri di servizio qdbus dopo l'avvio
konsole &
echo pid is $!
ps aux | grep konsole
qdbus | grep konsole
Emette
pid is 2726
me 2726 0.0 0.4 45404 9952 pts/0 S+ 14:59 0:00 konsole
org.kde.konsole-2729
Il nome del servizio è sempre qdbus org.kde.konsole-{pid+epsilon}
ma la parte Epsilon è imprevedibile.
Nel mio script bash, come ottengo il nome esatto del servizio qdbus per la particolare istanza di konsole che ho appena generato?
Ecco una brutta soluzione hacky
qdbus | grep konsole | sed 's/[^0-9]//g' > /tmp/before
konsole &
sleep 1
qdbus | grep konsole | sed 's/[^0-9]//g' > /tmp/after
N=`sort /tmp/before /tmp/after | uniq -u`
ma sicuramente c'è un modo migliore!
'Servizio 'org.kde.konsole' non esiste. Ma se lancio manualmente konsole, il servizio' org.kde.konsole.12345' (o simile) esiste. 'qdbus | grep konsole' non elenca risultati se non eseguo almeno una konsole. – spraff