Я не гуру Linux, но кажется, что dbus-monitor
это действительно инструмент для использования.
Ответ на пост Как создать демон, который будет слушать сценарий dbus и fire на сообщении :
Основано на https://askubuntu.com/questions/150790/how-do-i-run-a-script-on-a-dbus-signal
#!/bin/bash interface=org.gnome.ScreenSaver member=ActiveChanged dbus-monitor --profile "interface='$interface',member='$member'" | while read -r line; do echo $line | grep ActiveChanged && your_script_goes_here done
Просто вставьте это в /etc/init.d/monitor-for-unlock, сделайте его исполняемым, а затем сделайте мягкую ссылку в rc2.d
chmod +x /etc/init.d/monitor-for-unlock cd /etc/rc2.d ln -s /etc/init.d/monitor-for-unlock .
Статья Мониторинг D-Bus добавляет:
Вероятно, самая мощная особенность dbus-monitor - это то, что вы не ограничены использованием только одного выражения часов за раз. В следующем примере одновременно отслеживаются все 3 сигнала Tomboy и используется awk для анализа выходных данных dbus-monitor и отображения значимого сообщения.
#!/bin/bash OJECT="'org.gnome.Tomboy'" IFACE="'org.gnome.Tomboy.RemoteControl'" DPATH="'/org/gnome/Tomboy/RemoteControl'" WATCH1="type='signal', sender=$, interface=$, path=$, member='NoteAdded'" WATCH2="type='signal', sender=$, interface=$, path=$, member='NoteSaved'" WATCH3="type='signal', sender=$, interface=$, path=$, member='NoteDeleted'" dbus-monitor "$" "$" "$" | \ awk ' /member=NoteAdded/ { getline; print "Created note " substr($2,7) } /member=NoteSaved/ { getline; print "Added note " substr($2,7) } /member=NoteDeleted/ { getline; print "Deleted note " substr($2,7) } '
Вот вывод, сгенерированный, когда я щелкнул значок Tomboy, чтобы создать новую заметку, дождался автоматического сохранения и затем выбрал опцию удаления, чтобы удалить заметку.
$ ./test Created note //tomboy/3da026dc-f6ee-4637-8a94-bec6e2844824" Added note //tomboy/3da026dc-f6ee-4637-8a94-bec6e2844824" Deleted note //tomboy/3da026dc-f6ee-4637-8a94-bec6e2844824"