Como matar e alternar sessão X via cli

2

Alguém pode me dizer como remover sessões X dormentes. Esta questão é semelhante a Efetuando logout de outros usuários a partir da linha de comando , mas mais específico ao controle de displays X, que acho difícil de matar.

Eu usei o comando "who -u" para obter a sessão das outras telas:

$ who -u

O que me deu:

user1   :0           2014-08-18 12:08   ?          2891 (:0)
user1   pts/26       2014-08-18 16:11 17:18        3984 (:0)
user2   :1           2014-08-18 18:21   ?         25745 (:1)
user1   pts/27       2014-08-18 23:10 00:27        3984 (:0)
user1   pts/32       2014-08-18 23:10 10:42        3984 (:0)
user1   pts/46       2014-08-18 23:14 00:04        3984 (:0)
user1   pts/48       2014-08-19 04:10   .          3984 (:0)

O kill -9 25745 não aparece para fazer nada.

Eu tenho um workshop onde vários usuários usarão o computador com seu próprio login. Após o término do workshop, há vários logins que são deixados abertos. Eu preferiria matar as sessões abertas em vez de tentar entrar na tela de cada usuário.

Mais uma vez, essa questão não é apenas sobre como desconectar usuários. Eu estou esperando para obter clareza também para matar / remover processos presos que são difíceis de matar.

    
por L. D. James 19.08.2014 / 16:28

2 respostas

0

Eu notei que o comando kill nem sempre funciona na primeira vez. Também há momentos em que isso vai funcionar, mas só tem uma resposta atrasada.

No caso de matar uma sessão de login, é mais provável que demore algum tempo para que todos os processos morram ou sejam mortos. Então eu escrevi um script que verifica e segue com sucessivos sucessos que sempre conseguiram sair da sessão X desejada.

#!/bin/bash

results=1   
while [[ $results > 0 ]]
do
    sudo kill -9 25745
    results=$?
    echo -ne "Response:$results..."
    sleep 20
done
    
por L. D. James 10.06.2015 / 16:17
0

Para matar todos os usuários logados por :1 use este comando:

awk '/\s:1\s/ {system("sudo kill -9 ")}' <<< $(who -u)

No seu caso, user2

user2   :1           2014-08-18 18:21   ?         25745 (:1)

Ou todas as sessões para user2 pelo nome de usuário

awk '/^user2\s/ {system("sudo kill -9 ")}' <<< $(who -u)
    
por A.B. 10.06.2015 / 16:35