Я пытаюсь выполнить команду bash при блокировке / разблокировке экрана.
Следуя инструкциям и вопросам StackExchange, я придумал следующий код:
#!/bin/bash
while true; do #added to try to solve the issue, but alas it did not
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
while read sign; do
case "$sign" in
*"boolean false"*) echo "Screen unlocked";;
*"boolean true"*) echo "Screen locked";;
esac
done
done
Я запускаю программу с помощью следующей команды:
nohup myprogram.sh &
При запуске все работает хорошо, но через некоторое время (несколько часов) эхосигнал исчезает, когда экран заблокирован / разблокирован.
Проверяя вывод ps aux | grep mycommand
, я получаю следующий результат при запуске :
user <pid1> 0.0 0.0 <number> <number> pts/2 S 13:01 0.00 /bin/bash myprogram.sh
user <pid2> 0.0 0.0 <number> <number> pts/2 S 13:01 0.00 /bin/bash myprogram.sh
После того, как он прервется и больше не будет отправлять сообщения, , тогда вывод ps
покажет только одну строку .
Я использую CentOS 6.5 , с Gnome 2.28 (и я, к сожалению, не могу перейти на более новую версию).
Хотели бы вы знать, что может происходить и / или как проводить дальнейшие расследования?
Редактировать: исправлена синтаксическая ошибка while true; then