Закрытие экрана скриптом bash - PullRequest
1 голос
/ 23 марта 2011

Я пытаюсь закрыть screen(1) по сценарию, в котором запущено приложение. Как я мог это сделать? Я делаю screen -dmS name stuff_to_execute, но он создает новый. Я пытался найти, как это сделать, но ничего не нашел.

Ответы [ 4 ]

3 голосов
/ 23 марта 2011

Из справочной страницы screen(1):

-d -m Стартовый экран в «отдельном» режиме. Это создает новый сеанс, но не присоединяется к нему. Это полезно для сценариев запуска системы.

Так что я не думаю, что -dmS когда-либо закроет работающую screen(1).

Вы хотите убить указанный screen(1) экземпляр? Или вы просто хотите заставить его отсоединиться?

Если вы хотите убить: screen -S name -X quit

Если вы хотите отсоединить: screen -dS name

1 голос
/ 20 октября 2014

Это то, что я использую, чтобы закрыть все экраны:

screen -ls | grep Detached | awk '{print $1}' | cut -f1 -d'.' | while read in; do screen -X -S $in quit; done 

Он ищет идентификатор экрана и закрывает их все по идентификатору.

0 голосов
/ 20 июля 2015
:~$ screen -list

Есть экраны на:
23308.rsamikan-3 (понедельник, 20 июля 2015 г. 04:42:05 IST) (отдельно)
23014.rsamikan-2 (понедельник, 20 июля 2015 г. 04:41:53 IST) (отдельно)
22730.rsamikan-1 (понедельник, 20 июля 2015 г. 04:41:44 IST) (отдельно)
16037.rsamikan-remote (понедельник, 20 июля 2015 г. 02:51:37 IST) (Прилагается) 4 сокета в /var/run/screen/S-rsamikan.

Я отключил и уничтожил оторванный экран только с помощью следующего сценария.

:~$ **screen -list | grep Detached | awk '{print $1}' | while read in; do screen -X -S $in quit; done**

:~$ screen -list

Есть экран:

16037.rsamikan-remote (понедельник, 20 июля 2015 г. 02:51:37 IST) (Прилагается) 1 разъем в /var/run/screen/S-rsamikan.

0 голосов
/ 25 марта 2014

Иногда упрямый скрипт с открытым экраном можно убить, послав ему последовательность клавиш отмены:

screen -X -S "script0$scriptID" stuff "^C"
...