Desligar a sessão do ecrã desprendida [fechada]
Screen-X-S [session # you want to kill] kill[[1]] onde[sessão # você quer matar] pode ser obtido de {[[2]}
[1]}Screen-ls .Mas isto não funciona. Passa-se alguma coisa? Qual é a maneira correcta?
11 answers
quit
.
Exemplo
$ screen -X -S [session # you want to kill] quit
Você pode matar uma sessão separada que não está respondendo dentro da sessão de tela fazendo o seguinte.
-
Tipo
screen -list
para identificar a sessão de ecrã separada.~$ screen -list There are screens on: 20751.Melvin_Peter_V42 (Detached)
Nota:
20751.Melvin_Peter_V42
é o seu ID da sessão. -
Acoplar - se à sessão de ecrã desprendida
screen -r 20751.Melvin_Peter_V42
Uma Vez ligado à sessão, carregue em Ctrl + a depois escreva
:quit
Listar os ecrãs:
screen -list
Resultado:
There is a screen on:
23536.pts-0.wdzee (10/04/2012 08:40:45 AM) (Detached)
1 Socket in /var/run/screen/S-root.
Desligar a sessão do ecrã:
screen -S 23536 -X quit
É mais fácil matar uma sessão, quando um nome significativo é dado:
//Creation:
screen -S some_name proc
// Kill detached session
screen -S some_name -X quit
screen -ls
O que resulta em
There is a screen on:
26727.pts-0.devxxx (Attached)
1 Socket in /tmp/uscreens/S-xxx. <------ this is where the session is.
E basta removê-lo:
cd /tmp/uscreens/S-xxx
ls
26727.pts-0.devxxx
rm 26727.pts-0.devxxx
ls
O directório uscreens
já não terá o ficheiro 26727.pts-0.devxxx
nele. Agora certifique-se de digitar apenas isto:
screen -ls
E você deve ter:
Não foram encontradas fichas /tmp/uscreens / S-xxx.
screen -wipe
Deve limpar tudo Morto sessões de ecrã.
Para mim um simples
exit
Funciona. Isto é de dentro da sessão de tela.
Adicione isto ao seu ~/.bashrc
:
alias cleanscreen="screen -ls | tail -n +2 | head -n -2 | awk '{print $1}'| xargs -I{} screen -S {} -X quit"
Então use cleanscreen
para limpar toda a sessão do ecrã.
Para matar todas as sessões de ecrã separadas, inclua esta função no seu .bash_profile:
killd () {
for session in $(screen -ls | grep -o '[0-9]\{5\}')
do
screen -S "${session}" -X quit;
done
}
Para executá - lo, Ligue killd
== ISSUE THIS COMMAND
[xxx@devxxx ~]$ screen -ls
== SCREEN RESPONDS
There are screens on:
23487.pts-0.devxxx (Detached)
26727.pts-0.devxxx (Attached)
2 Sockets in /tmp/uscreens/S-xxx.
== NOW KILL THE ONE YOU DONT WANT
[xxx@devxxx ~]$ screen -X -S 23487.pts-0.devxxx kill
== WANT PROOF?
[xxx@devxxx ~]$ screen -ls
There is a screen on:
26727.pts-0.devxxx (Attached)
1 Socket in /tmp/uscreens/S-xxx.
Em alternativa, enquanto na sua sessão de ecrã, tudo o que tem de fazer é o tipo sair
Isto irá acabar com a sessão da linha de comandos iniciada pelo ecrã, que termina efectivamente a sessão do ecrã em que está.
Não é necessário preocupar-se com o ID da sessão do ecrã, etc.