Sair do usuário gráfico a partir da linha de comando

7

Apenas mais curioso.

Digamos que alguém tenha feito login no Mac deles normalmente, ou seja, um logon gráfico - e o sistema quase não responde e eu preciso desconectá-lo.

Eu posso reinicializar o sistema com bastante facilidade (e se as coisas travarem pode ser garantido) usando ' sudo reboot ' ou o comando ' shutdown ', mas, é possível simplesmente fazer o logout remotamente, assim como ser feito através do Apple Remote Desktop?

Editar: Existe uma maneira legal de fazer isso, que permite salvar arquivos ou possivelmente cancelar o logout?

    
por Clinton Blackmore 20.05.2009 / 17:31

9 respostas

4

Se você habilitar o ssh sever (login remoto no diálogo de preferências de compartilhamento), você poderá enviar ssh para o Mac de outra máquina e emitir qualquer comando que desejar.

Por exemplo: shutdown -r now

EDITAR:

sudo kill WindowServer

Isso fará o logout do usuário.

    
por 20.05.2009 / 17:36
3

Você poderia fazer uma espécie de:

killall -u <username>

Mas isso é muito sujo. Ou apenas mate seu processo de logon. Isso seria muito bem como ter uma tela azul da caixa do Windows em você embora. Eles perderiam qualquer trabalho não salvo, etc.

Eu não consigo pensar em outra maneira de fazer isso com mais graça.

    
por 20.05.2009 / 17:35
2

Qualquer usuário com privilégios de administrador pode fazer o logout usando launchctl se for um sistema pós 10.9.

sudo launchctl bootout gui/$(id -u <username>) desmontará a sessão temporária do usuário e retornará o sistema à janela de login.

Você pode ver launchctl help para mais informações.

Lembre-se de que o domínio temporário de um usuário (especificado por gui/501 ou algum outro ID de usuário) é definido pelo ID desse usuário e o sistema não mapeará um nome de usuário para o ID do usuário (mas id ).

    
por 14.03.2016 / 21:24
1

Isso quase funciona:

echo 'tell application "System Events" ^ log out ^ keystroke return ^ end tell' | tr '^' '\n' | osascript

Se você não se importar de esperar pelo cronômetro da janela de login para a contagem regressiva, será mais fácil:

osascript -e 'tell application "System Events" to log out'

Agora, enquanto você pode se desconectar dessa maneira (de uma sessão SSH), você verá:

_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.

Se você tentar fazer isso com outra pessoa (mesmo com o sudo).

    
por 04.06.2009 / 23:54
1

Não tenho certeza de como matar o login do usuário e permitir que ele cancele a ação ou salve o arquivo, embora a maioria dos aplicativos no Lion seja salva automaticamente. Tenho tido um problema em que o protetor de tela do Lion é interrompido (iniciado quando atualizei para o OSX 10.7.4 - consulte o link ) e a maneira como lidei com isso é a seguinte.

SSH no Mac em questão (isso obviamente pressupõe que você pode fazer isso) e

ps ax | grep [W]indowServer

isto lhe dará o ID do processo do WindowServer. Então

sudo kill -HUP *{the PID from the previous command}*

O Mac aguarda alguns momentos enquanto faz o que precisa fazer e, em seguida, retorna à tela de login.

    
por 20.05.2012 / 10:00
1

Um bom utilitário para adicionar ao seu Terminal é o comando "logout", para ser usado como:

logout UserName

Aqui, como:

  1. Edite seu .bash_profile

    nano ~/.bash_profile

  2. Adicione esta linha:

    logout() {sudo launchctl bootout user/$(id -u "$1")}

  3. Salve o arquivo pressionando ctrl+x

  4. Reinicie o terminal

Você está pronto para ir;)

    
por 18.10.2018 / 20:09
0

Encontre o seu WindowServer ou processo de login:

grep WindowServer

Encontre o pid do processo do usuário

sudo kill -9

Isso pressupõe que você é um administrador em seus computadores.

    
por 29.05.2009 / 22:46
0

Matar o servidor de janelas levará todos os processos filhos com ele.

Se você puder efetuar login como usuário via SSH, poderá usar:

$ alias maclogout="osascript -e 'tell application \"System Events\" to log out' "
$ (sleep 1; maclogout) &

Espere esperar quase dois minutos antes que a janela de login apareça. Nos meus testes, a caixa de diálogo de logout não apareceria até dez ou quinze segundos após o comando ser dado, então há uma espera de sessenta segundos e, em seguida, há o tempo necessário para efetuar logout.

    
por 16.03.2015 / 09:35
0
Outra alternativa é a abordagem dada na resposta do usuário bmike a uma pergunta da Apple. StackExchange.com :

sudo pkill loginwindow
    
por 08.12.2015 / 21:32