O que é o comando de terminal do Mac OS X para efetuar logout do usuário atual?

19

Eu gostaria de executar algo como "sleep 3600; logout", mas o comando logout bash somente fecha o terminal atual. Como faço para fechar a sessão completa do Mac OS X?

    
por Grzegorz Adam Hankiewicz 12.09.2009 / 09:50

7 respostas

22

O seguinte Applescript fará o logout do usuário atual:

tell application "System Events" to log out

Você pode agrupar isso em um alias bash usando o comando osascript :

alias maclogout="osascript -e 'tell application \"System Events\" to log out'"

É o mesmo que clicar em " > Efetuar logout [nome de usuário] ..." e sairá após 2 minutos de espera

Isso é facilmente combinado com o comando sleep :

alias delayedlogout="sleep 3600; maclogout"

.. ou pode ser combinado em um único alias:

alias delayedlogout="sleep 3600; osascript -e 'tell application \"System Events\" to log out'"
    
por 12.09.2009 / 22:30
17

Não há uma maneira "boa" de registrar o usuário atual no Terminal no OS X. A maneira "desordenada" de fazer isso é matar o processo loginwindow do usuário. Ele matará rudemente todos os processos (programas) em execução sob seu nome de usuário.

Fazer isso é um processo de duas etapas.

  1. No terminal, execute isto:

    ps -Ajc | grep loginwindow
    
  2. Em seguida, execute

    sudo kill <pid>
    

    Onde <pid> é o primeiro número (segunda coluna) da saída do comando acima.

Use sudo kill -9 para forçar a matar o processo que eu tive que fazer para que isso funcionasse.

Então, por exemplo, quando a saída para o primeiro comando é:

joshhunt    41     1    41 5e15c08    0 Ss     ??    3:13.09 loginwindow

Em seguida, executo sudo kill 41 , insiro minha senha e, em seguida, faço o logout.

Isso pode ser combinado em um alias bash:

alias messylogout="ps -Ajc | grep loginwindow | grep -v grep | awk '{print \}' | sudo xargs kill"
    
por 12.09.2009 / 10:15
3

Eu sei que esta é uma pergunta antiga, mas me ajudou, o comando que eu precisava no OS X 10.8 é:

ps -Ajc | grep loginwindow | awk '{print $2}' | sudo xargs kill -9

A declaração awk é diferente e o kill -9 garante que o prompt de login seja mostrado.

    
por 28.12.2013 / 19:57
2

Acho que encontrei a resposta para como Graciosamente Fazer logout do Mac OS X sem esperar 2 minutos.

Eu descobri que segurar Shift, Option e Command e pressionar "q" sairão normalmente e não perguntar "se você quiser sair".

Então eu codifiquei um AppleScript através do Automator para:

tell application "System Events"
     keystroke "q" using {command down, shift down, option down}
end tell
    
por 09.05.2014 / 05:06
0

Se você estiver logado em um shell como o mesmo usuário que está logado no gui do mac, você pode emitir um comando sudo-less: launchctl reboot logout , que faz o logout do usuário com bastante eficiência; ele tem a condição de não permitir que os aplicativos que estão sendo desativados solicitem interação ao encerrar, no entanto, isso não parece implicar que isso é a mesma coisa que matá-los imediatamente como kill (SIG TERM) ou kill -9 ( SIG KILL) pode.

    
por 27.06.2016 / 20:38
0

Eu diria que a maneira mais "boa" de postar o OS X 10.9 pode ser launchctl gui/$(id -u <username>) bootout

A documentação do post OS X 10.9 para launchctl é encontrada executando launchctl help , mas essencialmente o comando acima desmontará a sessão temporária de um usuário. A alternativa launchctl user/$(id -u <username>) bootout interrompe a sessão permanente que executa os daemons do usuário enquanto o usuário não está conectado.

Isso pode ser testado executando launchctl gui/$(id -u) bootout , isso irá desconectá-lo imediatamente e fará com que o sistema exiba a janela de login (com algum atraso).

    
por 14.03.2016 / 21:15
0

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 / 19:56