У меня возникла аналогичная проблема с моей настройкой на OUYA. У меня есть окно входа в систему SLIM с Xfce4, и у меня также есть SSH. Я нашел файл MIT-MAGIC-COOKIE (/var/run/slim.auth) и смог подключиться к дисплею сразу после выполнения команды в SSH. У меня сработала команда:
x11vnc -auth /var/run/slim.auth
Надеюсь, это даст результат, который вы искали.
trap
сама реагирует на сигналы вызывающего процесса. Но вы должны вызвать его до того, как будет получен сигнал. Я имею в виду, в начале вашего сценария.
Кроме того, если вы хотите использовать kill - - $$
, который также отправляет сигнал вашему скрипту, вам необходимо очистить ловушку перед запуском kill, иначе вы закончите с бесконечным kill && trap цикл.
Например:
#!/bin/bash
exit_script() {
echo "Printing something special!"
echo "Maybe executing other commands!"
trap - SIGINT SIGTERM # clear the trap
kill -- -$$ # Sends SIGTERM to child/sub processes
}
trap exit_script SIGINT SIGTERM
echo "Some other text"
#other commands here
sleep infinity
Как объясняется в комментариях, проблема в том, что сценарий получает сигнал, но ожидает завершения программы ожидания перед обработкой принятого сигнала. Итак, вы должны убить дочерние процессы (в данном случае процесс сна), чтобы запустить действие ловушки. Вы можете сделать это примерно так:
kill -- -$(pgrep script.sh)
Или как указано в комментариях:
killall -g script.sh