Ich möchte so etwas wie "sleep 3600; logout" ausführen, aber der Befehl logout bash schließt nur das aktuelle Terminal. Wie schließe ich die gesamte Mac OS X-Sitzung?
macos
mac
command-line
Grzegorz Adam Hankiewicz
quelle
quelle
alias maclogout="..."
Es gibt keine "nette" Möglichkeit, den aktuellen Benutzer in OS X vom Terminal abzumelden
loginwindow
. Alle Prozesse (Programme), die unter Ihrem Benutzernamen ausgeführt werden, werden grob abgebrochen.Dies ist ein zweistufiger Prozess.
Führen Sie im Terminal Folgendes aus:
Dann renne
Wo
<pid>
ist die erste Zahl (zweite Spalte) aus der Ausgabe des obigen Befehls.Verwenden Sie sudo kill -9, um den Prozess zu erzwingen, den ich ausführen musste, um dies zum Laufen zu bringen.
Wenn also beispielsweise die Ausgabe für den ersten Befehl wie folgt lautet:
Dann würde ich laufen
sudo kill 41
, mein Passwort eingeben und dann werde ich abgemeldet.Dies kann zu einem Bash-Alias kombiniert werden:
quelle
sudo killall loginwindow
? Zumindest ab 10.7loginwindow
scheint der Prozess aber sofort wieder geöffnet zu sein.Ich weiß, dass dies eine alte Frage ist, aber sie hat mir geholfen. Der Befehl, den ich unter OS X 10.8 benötigte, lautet:
Die
awk
Anweisung ist anders undkill -9
stellt sicher, dass die Anmeldeaufforderung angezeigt wird.quelle
Ich denke, ich habe die Antwort gefunden, wie man sich von Mac OS X anmutig abmeldet, ohne 2 Minuten warten zu müssen.
Ich habe herausgefunden, dass das Halten von Umschalttaste, Wahltaste und Befehl und das Drücken von "q" sich anmutig abmeldet und nicht fragt, ob Sie sich abmelden möchten.
Also habe ich ein AppleScript durch Automator geschrieben, um:
quelle
Wenn Sie bei einer Shell als derselbe Benutzer angemeldet sind, der auch bei der Benutzeroberfläche des Mac angemeldet ist, können Sie einen sudo-less-Befehl ausgeben:
launchctl reboot logout
Dadurch wird der Benutzer ziemlich effektiv abgemeldet . Es hat den Vorbehalt, dass Apps, die gerade beendet werden, beim Beenden nicht zur Interaktion aufgefordert werden. Es scheint jedoch nicht zu implizieren, dass dies das Gleiche ist, als würden sie sofort getötetkill
(SIG TERM) oderkill -9
(SIG KILL).quelle
Ich würde argumentieren, dass der "schönste" Weg nach OS X 10.9 sein könnte
launchctl gui/$(id -u <username>) bootout
Die Post-OS-X-10.9-Dokumentation für launchctl wird beim Ausführen gefunden
launchctl help
, aber der obige Befehl beendet im Wesentlichen die temporäre Sitzung eines Benutzers. Die Alternative beendetlaunchctl user/$(id -u <username>) bootout
die permanente Sitzung, in der Benutzerdämonen ausgeführt werden, während der Benutzer nicht angemeldet ist.Dies kann durch Ausführen getestet werden. Dadurch
launchctl gui/$(id -u) bootout
werden Sie sofort abgemeldet und das System zeigt das Anmeldefenster an (mit einer gewissen Verzögerung).quelle
sudo launchctl bootout gui/XXX
woXXX
die numerische Benutzer-ID (UID) ist. Beachten Sie, dass i) derbootout
Unterbefehl an erster Stelle steht und ii)$(id)
viel mehr als die UID zurückgibt.Ein nützliches Dienstprogramm, das Sie zu Ihrem Terminal hinzufügen können, ist der Abmeldebefehl , der wie folgt verwendet werden kann:
Hier das Gewusst wie:
Bearbeiten Sie Ihr .bash_profile
nano ~/.bash_profile
Diese Zeile hinzufügen:
logout() {sudo launchctl bootout user/$(id -u "$1")}
Speichern Sie die Datei mit
ctrl+x
Starten Sie das Terminal neu
Sie sind bereit zu gehen;)
quelle