Отображение pid на служебные номера qdbus после запуска
Я пытаюсь написать скрипт bash, который запустит программу (konsole) и отправит ей сообщения dbus. Вот мой эксперимент
konsole &
echo pid is $!
ps aux | grep konsole
qdbus | grep konsole
Это выводы
pid is 2726
me 2726 0.0 0.4 45404 9952 pts/0 S+ 14:59 0:00 konsole
org.kde.konsole-2729
Имя сервиса qdbus всегда org.kde.konsole-{pid+epsilon}
но эпсилон часть непредсказуема.
В моем скрипте bash как мне получить точное имя службы qdbus для конкретного экземпляра konsole, который я только что создал?
Вот противное, взломанное решение
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`
но наверняка есть лучший способ!
1 ответ
Вы можете проверить PPID qdbus, чтобы увидеть связанную консоль.
Попробуйте запустить новый экземпляр Konsole через D-Bus API с qdbus org.kde.konsole /Konsole newSession
, Он вернет идентификатор сеанса, который впоследствии можно будет использовать для управления им с помощью вызовов /Session/$SID
объект org.kde.konsole
оказание услуг.