Как остановить процесс экрана в Linux? - PullRequest
43 голосов
/ 10 июня 2011

Я запускаю скрипт на удаленном сервере.Я запустил скрипт в screen, однако мне нужно остановить его до его завершения, так как мне нужно обновить скрипт.Я могу легко отсоединиться от screen, но есть ли способ убить процесс screen?

Ответы [ 4 ]

70 голосов
/ 10 июня 2011

CTRL + a, а затем 'k' завершит сеанс экрана.

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

Существует несколько «экранных» способов завершить определенный сеанс экрана из командной строки (не в интерактивном режиме).

1) отправить команду «quit»:

screen -X -S "sessionname" quit

2) отправьте Ctrl-C в сеанс экрана, запустив скрипт:

screen -X -S "sessionname" stuff "^C"

В обоих случаях вам нужно будет использовать 'screen -ls', чтобы найти имя сеанса сеанса экрана, который выхотите убить ... если запущен только один сеанс экрана, вам не нужно указывать параметр -S "sessionname".

3 голосов
/ 16 июня 2014

Я использовал это, чтобы выйти из сотен ошибочных сеансов экрана, созданных ошибочной командой:

for s in $(screen -ls|grep -o -P "1\d+.tty"); do screen -X -S $s quit; done;

где: grep -o -P "1\d+.tty" - это команда для получения имен сеансов с Perl-подобным именем regex "1\d+.tty", которая захватывает все сеансы, начинающиеся с номера 1, имеет некоторые другие числа (\d) и заканчивается .tty

Внимание : Сначала вы должны проверить эту команду, чтобы увидеть, какой список сеансов вы хотите получить, прежде чем применять приведенную выше команду. Это сделано для того, чтобы избежать выхода из нежелательных сессий:

for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;

Я всегда к этому echo тесту всякий раз, когда список в цикле for неясен, например, тот, который генерируется подкомандой в расширении $().

2 голосов
/ 13 сентября 2018

предыдущие ответы не работали для меня на терминале winputty и соединении с сервером amazon ssh .. но этот действительно работает:

screen -S yourscreentitlehere -X stuff $'\003'

ссылки:

...