Como remover muitas sessões de tela desanexadas no Unix?

2

Tenho trabalhado em diferentes sessões de tela em projetos anteriores, por isso tenho algumas sessões de tela acumuladas. Agora me pediram para remover sessões de tela excessivas / desnecessárias da caixa Unix. Nenhum deles são sessões mortas - o status é separado, não morto. O SO é Solaris.

Um dos métodos que me veio à mente é excluir a pasta em que as telas são mantidas na pasta /tmp/mylogin/screen-r/... , mas não tenho certeza se isso deixaria algum processo extra ou algo passivo no servidor.

Como posso removê-los sem deixar nada para trás?

Além disso, essas telas desanexadas ocupam bastante recursos, o suficiente para alertar o administrador de sistema? Ou seja, existem problemas criados por algumas sessões de tela não utilizadas / desanexadas?

    
por n13 04.06.2013 / 01:48

5 respostas

2

Que tal algo como isto:

screen -ls | awk -F. '$NF~"(Attached)" {print "kill -HUP " $1}' | sh

Deixe de fora o | sh se você quiser ver o que será executado.

Parece funcionar bem em um teste rápido que fiz.

    
por 04.06.2013 / 19:49
1

Eu sei sua velha pergunta, mas aqui está o que eu fiz

Named sessions : when i open screen to have meaningful name id for some stuffs im doing related to superuser.com 
# screen -S superuser.com
.. < Ctrl + a + d > ..
# screen -ls
    21668.superuser.com (Detached)  
    21664.otography.com (Detached)
    17386.wimbledon (Detached)
    17200.unsigned.com  (Detached)
    16956.tattooremo    (Detached)
    1082.refinedwater.co.uk (Detached)
    27256.apple.com (Detached)
    21481.careus.co.uk  (Detached)
    326.onlinebuziness.me.uk    (Detached)

# screen -ls | grep "Detached" | awk '{ print $1; }' | cut -d'.' -f2- | xargs -I {} -n 1 screen -S {} -X quit

# screen -ls
    No Sockets found in /var/run/screen/S-root.

Nomes de sessão normais: quando eu simplesmente digito "tela" na sessão de tela de abertura

 #screen -ls
    There are screens on:
    11580.pts-0.server  (Detached)
    11571.pts-0.server  (Detached)
    2 Sockets in /var/run/screen/S-root.

# screen -ls | grep "Detached" | awk '{ print $1; }' | cut -d'.' -f1 | xargs -I {} -n 1 screen -S {} -X quit

# screen -ls
No Sockets found in /var/run/screen/S-root.
    
por 27.10.2015 / 06:43
0

Lista mostra semelhante a saída abaixo

rajshah@rainbow:~$ screen -ls

There are screens on:
        8105.pts-152.rainbow    (Detached)
        5587.work     (Attached)
        20462.rajshah       (Attached) 3 Sockets in /var/run/screen/S-rajshah.

Como as sessões de tela são armazenadas em / var / run / screen / S - /

Para remover qualquer sessão,

rm -rf /var/run/screen/S-rajshah/8105.pts-152.rainbow

rajshah@rainbow:~$ screen -ls

There are screens on:
        5587.work     (Attached)
        20462.rajshah       (Attached) 3 Sockets in /var/run/screen/S-rajshah.
    
por 18.09.2014 / 12:19
0

Eu acho que a maneira segura é primeiro matar o processo de tela, em seguida, executar o comando screen com a opção que eu adicionei.

#ps  -ef|grep screen|grep  -v  grep 

root  8362     1   0 21:20:38 ?           0:00 screen


# screen -ls
There are screens on:
        8363.pts-19.   (Dead ???)
        8262.8  (Attached)
Remove dead screens with 'screen -wipe'.
2 Sockets in /root/.screen.

#kill -9 8262

# screen -wipe
There are screens on:
        8362.pts-19   (Removed)
        8263.8  (Removed)
2 sockets wiped out.
    
por 27.10.2015 / 20:38
0

Eu tive esse problema com um usuário. Primeiro, executei este comando para ver quantas sessões de tela foram abertas por esse usuário:

*# ps aux | grep username > /detached_screens.txt**

(O comando acima examinará os processos que estão em execução e o comando grep ajudará você a restringir a pesquisa para mostrar apenas os processos executados por esse usuário específico. Após o nome de usuário grep, eu o gravei em um arquivo para referência. Você não precisa usar essa parte) Eu encontrei 278 sessões de tela desanexadas que nunca foram fechadas de meses anteriores. Depois de descobrir o PID para cada tela desanexada, executei o seguinte comando:

*# kill -9 PID PID PID PID PID ...

Isso matou todos os processos que eu especifiquei.

    
por 29.12.2017 / 15:55