Je voudrais exécuter quelque chose comme "sleep 3600; logout", mais la commande logout bash ne ferme que le terminal actuel. Comment fermer la session complète de Mac OS X?
macos
mac
command-line
Grzegorz Adam Hankiewicz
la source
la source
alias maclogout="..."
Il n'y a aucun moyen "sympa" de déconnecter l'utilisateur actuel de Terminal sous OS X. La manière "désordonnée" de le faire est de tuer le
loginwindow
processus de cet utilisateur . Il tuera grossièrement tous les processus (programmes) exécutés sous votre nom d'utilisateur.Faire cela est un processus en deux étapes.
Dans le terminal, exécutez ceci:
Ensuite, exécutez
Où
<pid>
est le premier nombre (deuxième colonne) de la sortie de la commande ci-dessus.Utilisez sudo kill -9 pour forcer la suppression du processus que je devais faire pour que cela fonctionne.
Ainsi, par exemple, lorsque si la sortie de la première commande est:
Ensuite, je cours
sudo kill 41
, saisis mon mot de passe, puis je suis déconnecté.Cela peut être combiné en un alias bash:
la source
sudo killall loginwindow
? Au moins sur 10,7, leloginwindow
processus semble être rouvert immédiatement cependant.Je sais que c'est une vieille question mais cela m'a aidé, la commande dont j'avais besoin sur OS X 10.8 est:
L'
awk
instruction est différente etkill -9
garantit que l'invite de connexion est affichée.la source
Je pense avoir trouvé la réponse à la déconnexion complète de Mac OS X sans attendre 2 minutes.
J'ai compris que maintenir Shift, Option et Command et appuyer sur "q" se déconnecterait gracieusement et ne demanderait pas "si vous voulez vous déconnecter".
J'ai donc codé un AppleScript via Automator pour:
la source
Si vous êtes connecté à un shell en tant que même utilisateur qui est connecté à l'interface graphique du mac, vous pouvez émettre une commande sans sudo:
launchctl reboot logout
qui déconnecte l'utilisateur assez efficacement; il a la mise en garde de ne pas permettre aux applications qui sont en train de quitter d'inviter à l'interaction lors de la fermeture, mais cela ne semble pas impliquer que cela revient à les tuer purement et simplement commekill
(SIG TERM) oukill -9
(SIG KILL).la source
Je dirais que la façon la plus "agréable" après OS X 10.9 pourrait être
launchctl gui/$(id -u <username>) bootout
La documentation post OS X 10.9 pour launchctl est trouvée en exécutant
launchctl help
, mais essentiellement la commande ci-dessus supprimera la session temporaire d'un utilisateur. L'alternativelaunchctl user/$(id -u <username>) bootout
supprime la session permanente qui exécute les démons utilisateur alors que l'utilisateur n'est pas connecté.Cela peut être testé en exécutant
launchctl gui/$(id -u) bootout
, cela vous déconnectera immédiatement et amènera le système à afficher la fenêtre de connexion (avec un certain retard).la source
sudo launchctl bootout gui/XXX
où seXXX
trouve l'ID utilisateur numérique (UID). Notez que i) labootout
sous - commande vient en premier et ii)$(id)
renvoie beaucoup plus que l'UID.Un bon utilitaire à ajouter à votre terminal est la commande de déconnexion , à utiliser comme:
Voici comment:
Modifiez votre .bash_profile
nano ~/.bash_profile
Ajoutez cette ligne:
logout() {sudo launchctl bootout user/$(id -u "$1")}
Enregistrez le fichier en appuyant sur
ctrl+x
Redémarrez le terminal
Vous êtes prêt à partir ;)
la source