Modo per disconnettere un utente dalla riga di comando in OS X 10.9

26

Voglio disconnettere il mio Mac OS X dalla riga di comando. La mia versione di OS X è 10.9. Ho provato il comando pkill -KILL -u uid , ma questo comando non ha funzionato. Esiste un comando che può essere utilizzato per disconnettere un utente dal sistema utilizzando solo la riga di comando, non AppleScript ?

    
posta prateeak ojha 07.04.2014 - 15:21
fonte

7 risposte

26

Per eseguire il logout esclusivamente dal terminale (o una sessione ssh remota), basta semplicemente terminare la procedura di login:

sudo pkill loginwindow

Potresti essere fantasioso e specificare l'utente se più utenti hanno una procedura di login, ma questo è uno scatto facile, nessun modo rapido per terminare la sessione grafica di un utente.

    
risposta data 07.04.2014 - 18:47
fonte
23

sudo launchctl bootout gui/$(id -u <username>)
o
sudo launchctl bootout user/$(id -u <username>)

Sostituisci il nome utente con il nome utente dell'utente di destinazione o sostituisci l'intera sottotitola con l'uid dell'utente. Questo dice a launchctl di eliminare la sessione di login degli utenti (la GUI si riferisce specificamente alla sessione di accesso temporanea dell'utente, l'utente specifica i processi in background degli utenti).

Puoi effettuare il logout senza sudo per testarlo.

Nota che questo funzionerà SOLO su macOS 10.11.xo successivi (vedi launchctl help per altri)

    
risposta data 14.03.2016 - 17:16
fonte
14

Questo ha funzionato per me in passato:

Esci (con conferma)

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

Esci direttamente (nessuna conferma)

osascript -e 'tell app "System Events" to  «event aevtrlgo»'

o

osascript -e 'tell application "loginwindow" to  «event aevtrlgo»'

In questo modo qualsiasi applicazione in esecuzione verrà notata e può essere terminata in modo sicuro.

    
risposta data 07.04.2014 - 15:30
fonte
2

Se hai più utenti ....

Trova l'ID processo con:

ps aux|grep login

Quindi uccidi quel processo e hai loggato quella sessione. Ma ci sono ancora molti processi.

Verifica con pstree in modo da sapere quale processo terminare.

    
risposta data 26.11.2014 - 14:23
fonte
2

Questo è il trucco per me.

sudo -s

Per ottenere alcuni privilegi di root e il prompt #, quindi uccidere i processi.

killall -vu username -HUP

E se non è tutto finito. Nuke em! Avviso obbligatorio: uccidere oggetti come root non ha annullamenti e non è possibile interrompere il processo senza salvare i file, inclusi i database critici del sistema che potrebbero rendere la macchina non avviabile in rare occasioni. " digita gli avvisi.

killall -vu username -9
    
risposta data 10.05.2015 - 23:54
fonte
1

Una bella utility da aggiungere al tuo terminale è il comando "logout", da utilizzare come:

logout UserName

Ecco come:

  1. Modifica il tuo .bash_profile

    nano ~/.bash_profile

  2. Aggiungi questa riga:

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

  3. Salva il file premendo ctrl+x

  4. Riavvia il terminale

Sei pronto per andare;)

    
risposta data 18.10.2018 - 19:54
fonte
-3

se hai effettuato l'accesso con ssh a un computer remoto puoi effettuare il logout semplicemente digitando 'exit':

[host:~user]$ exit
    
risposta data 09.01.2016 - 13:11
fonte

Leggi altre domande sui tag