Eu gostaria de executar algo como "sleep 3600; logout", mas o comando logout bash fecha apenas o terminal atual. Como fecho a sessão completa do Mac OS X?
macos
mac
command-line
Grzegorz Adam Hankiewicz
fonte
fonte
alias maclogout="..."
Não há uma maneira "agradável" de desconectar o usuário atual do Terminal no OS X. A maneira 'confusa' de fazer isso é matar o
loginwindow
processo desse usuário . Isso irá matar de forma grosseira todos os processos (programas) executados com o seu nome de usuário.Fazer isso é um processo de duas etapas.
No terminal, execute o seguinte:
Então corra
Onde
<pid>
está o primeiro número (segunda coluna) da saída do comando acima.Use o sudo kill -9 para forçar o processo que eu precisei fazer para que isso funcionasse.
Por exemplo, quando se a saída para o primeiro comando for:
Então eu corria
sudo kill 41
, digitava minha senha e depois saí.Isso pode ser combinado em um alias do bash:
fonte
sudo killall loginwindow
? Pelo menos em 10.7 ologinwindow
processo parece ser aberto novamente imediatamente imediatamente.Eu sei que essa é uma pergunta antiga, mas ela me ajudou, o comando que eu precisava no OS X 10.8 é:
A
awk
instrução é diferente ekill -9
garante que o prompt de login seja mostrado.fonte
Acho que encontrei a resposta para fazer logoff graciosamente do Mac OS X sem a espera de 2 minutos.
Eu descobri que pressionar Shift, Option e Command e pressionar "q" sairá normalmente e não perguntará "se você deseja sair".
Então, eu codifiquei um AppleScript através do Automator para:
fonte
Se você estiver conectado a um shell como o mesmo usuário conectado à GUI do Mac, poderá emitir um comando sudo-less: o
launchctl reboot logout
que efetua logout do usuário com bastante eficiência; ele tem a ressalva de não permitir que os aplicativos que estão sendo interrompidos solicitem interação ao sair, no entanto, não parece implicar que isso é a mesma coisa que eliminá-los imediatamente como umkill
(SIG TERM) oukill -9
(SIG KILL).fonte
Eu diria que a maneira "mais legal" de postar o OS X 10.9 pode ser
launchctl gui/$(id -u <username>) bootout
A documentação pós OS X 10.9 para o launchctl é encontrada em execução
launchctl help
, mas essencialmente o comando acima desmontará a sessão temporária do usuário. A alternativalaunchctl user/$(id -u <username>) bootout
interrompe a sessão permanente que executa os daemons dos usuários enquanto o usuário não está conectado.Isso pode ser testado em execução
launchctl gui/$(id -u) bootout
, você será desconectado imediatamente e fará com que o sistema exiba a janela de login (com algum atraso).fonte
sudo launchctl bootout gui/XXX
ondeXXX
está o ID do usuário numérico (UID). Observe que i) obootout
subcomando vem primeiro e ii)$(id)
retorna muito mais que o UID.Um bom utilitário para adicionar ao seu Terminal é o comando logout , para ser usado como:
Aqui o como:
Edite seu .bash_profile
nano ~/.bash_profile
Adicione esta linha:
logout() {sudo launchctl bootout user/$(id -u "$1")}
Salve o arquivo pressionando
ctrl+x
Reinicie o terminal
Você está pronto para ir ;)
fonte