Подтвердить что ты не робот

Как остановить процесс экрана в Linux?

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

4b9b3361

Ответ 1

CTRL + a, а затем "k" убьет сеанс экрана.

Ответ 2

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

1) отправьте команду "quit":

screen -X -S "sessionname" quit

2) отправьте Ctrl-C на сеанс экрана с script:

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

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

Ответ 3

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

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 не ясен, например, тот, который сгенерирован подкомандой в расширении $().