LINUX.ORG.RU

gnu screen, запущеное в нём приложение и Ctrl+c


0

1

Собственно имеем строку в .screenrc:
screen -t two 1 sh -c «echo point1; ./app_bin ; echo point2 ; bash»

при запуске screen'а видим:
point1
собственно запущеное app_bin

по идее, при остановке app_bin по ^C мы должны увидеть «point2» и шелл, но я получаю только:
[screen is terminating]

Как это побороть?
Что интересно, если вписать вместо app_bin htop(например) и остановить его по «q» всё отрабатывает как положено...

★★★★★

Последнее исправление: S_Paul (всего исправлений: 1)

gnu screen

deprecated

sh -c
по ^C мы должны увидеть «point2»

man bash в районе sigint

В общем желание немного странное, но можно поймать через trap.

anonymous
()
[aol@linux ~]$ screen
[aol@linux ~]$ echo 1; sleep 1000; echo 2
1
^C
2
[aol@linux ~]$ ^ad
[detached]
[aol@linux ~]$ screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

нажимал просто контрол и просто цэ

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от aol

Ладно.. но про trap, повторять не буду) :

       When bash is interactive, in the  absence  of  any  traps,  it  ignores
       SIGTERM (so that kill 0 does not kill an interactive shell), and SIGINT
       is caught and handled

anonymous
()
Ответ на: комментарий от S_Paul

что не так? долгоиграющая программа запущена в скрине, остановлена по ^c, при этом скрин не остановился. не этого ли ты добиваешься?

aol ★★★★★
()

Ну можно еще отдельный инит, если хочется прямо в screenrc, башизмом:
bash --rcfile <(echo "top; echo done; . ~/.bashrc").

anonymous
()
Ответ на: комментарий от anonymous

Хотелось бы ограничиться скрином.
А вот такая конструкция в конфиге(запуск скрина от рута и приложения в нём через su user) отрабатывает как нужно:

screen -t two 1 bash -c 'echo point1 ; su -m user -c "./app_bin" ; echo point2 ; bash'

S_Paul ★★★★★
() автор топика
Ответ на: комментарий от S_Paul

Ну значит su .. -c ловит sigint.

sh -c тоже правильно отрабатывает: нафига мне в каком-нибудь make попадать после ctrl-c в непонятный внутренний scope.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.