49 votes

Comment déconnecter un utilisateur à partir de la ligne de commande dans OS X 10.9

Je veux déconnecter mon Mac OS X à partir de la ligne de commande. Ma version d'OS X est 10.9. J'ai essayé la commande pkill -KILL -u uid mais cette commande n'a pas fonctionné. Existe-t-il une commande qui peut être utilisée pour déconnecter un utilisateur du système en utilisant uniquement la ligne de commande, et pas AppleScript ?

66voto

Iain Henderson Points 641

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

Remplacez username par le nom d'utilisateur de l'utilisateur cible ou remplacez le sous-shell entier par l'uid de l'utilisateur. Ceci indique à launchctl de détruire la session de connexion de l'utilisateur (gui se réfère spécifiquement à la session de connexion temporaire de l'utilisateur, user spécifie les processus d'arrière-plan de l'utilisateur).

Vous pouvez vous déconnecter sans le sudo pour tester cela.

Notez que cela ne fonctionnera QUE sur MacOS 10.11.x ou plus récent (cf. launchctl help pour en savoir plus)

30voto

Oskar Points 1242

Pour se déconnecter purement depuis le terminal (ou une session ssh distante), il suffit de tuer le processus loginwindow :

sudo pkill loginwindow

Vous pourriez faire preuve de fantaisie et spécifier l'utilisateur si plusieurs utilisateurs ont un processus de fenêtre de connexion, mais il s'agit d'un moyen simple et unique de mettre fin à la session graphique d'un utilisateur.

19voto

nohillside Points 82672

Cela a fonctionné pour moi dans le passé :

Déconnexion (avec confirmation)

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

Se déconnecter directement (sans confirmation)

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

ou

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

De cette façon, toute application en cours d'exécution sera remarquée et pourra se terminer en toute sécurité.

2voto

Kappe Points 131

Un utilitaire agréable à ajouter à votre Terminal est la commande "logout", à utiliser comme suit :

logout UserName

Voici le mode d'emploi :

  1. Modifier votre .bash_profile

    nano ~/.bash_profile

  2. Ajoutez cette ligne :

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

  3. Sauvegarder le fichier en appuyant sur ctrl+x

  4. Redémarrer le terminal

Vous êtes prêt à partir ;)

1voto

Si vous avez plusieurs utilisateurs ....

Trouvez l'ID du processus avec :

ps aux|grep login

Puis tue ce processus et tu as déconnecté cette session. Mais il reste beaucoup de processus.

Vérifiez avec pstree pour que vous sachiez à quel processus mettre fin.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X