Eu tenho várias telas em execução em um servidor Ubuntu que são iniciadas como:
screen -dmS screen1 cmd
screen -dmS screen2 cmd
etc...
E preciso matar uma tela, mas não todas. Qual é o comando correto para matar uma única tela específica com seu nome? Eu li as páginas de manual, mas não consigo encontrar o comando que estou procurando.
Também quero escrever esse comando em um script bash, para que eu não possa simplesmente screen -r screen1
pressionar Ctrl+ Xcomo faria normalmente.
bash
gnu-screen
kill
BassKozz
fonte
fonte
Respostas:
Na página do manual:
Você pode fazer :
fonte
Se você fizer um
screen -list
, notará que cada nome de tela começa com um número, que é o PID da tela:A partir daí, basta enviar um sinal KILL para esse PID específico:
e isso matará a tela específica.
fonte
A solução de defraagh não funciona para mim, no entanto, posso matar a sessão de tela usando a ideia de Raphink:
screen -list obtenha o ID do processo
kill -9 PROCESSID
tela - limpe SESSIONID
fonte
Se você tiver várias telas com o mesmo nome, poderá matá-las de uma vez:
O comando
screen -ls
imprime telas com o número do processo. Por exemplo, 4773.test é uma tela com o número de processo 4773 e o nome test . Saída de amostra:egrep
Filtros de comando acima do texto de amostra enviado via linha canalizada | .awk -F "." '{print $1}'
extrai a primeira coluna de cada linha. O delimitador entre colunas é definido como ponto (.) Pela opção -Fxargs kill
mata todos os processos cujos números são enviados via pipe.xargs
é usado quando queremos executar um comando em cada uma das entradas.fonte
Você abre uma nova janela com
Você fecha uma janela com
ou comando de saída dentro da janela
fonte
Eu tenho lidado com isso da seguinte maneira:
A explicação é que você pega a saída
screen -ls
e encontra a tela específica em que está interessado usando grep e depois atribui essa string à variávelprocess
.Como a saída de
screen -ls
sempre é o PID seguido de um período, você pode usar o cut para se livrar do período e de tudo o que se segue a ele. no exemplo acima, colocamos isso entre parênteses e o alimentamos com o comando kill, embora você possa fazê-lo linearmente, o que pode incluir a gravação em um arquivo temporário e a leitura dele.Você precisa se certificar de que seu nome de tela seja único e que grep retorne SOMENTE o nome da tela que você deseja eliminar.
fonte