Melden Sie einen anderen Benutzer ab, ohne zuerst zu diesem Benutzer zu wechseln

28

Meine Frau verwendet separate Konten und einen schnellen Benutzer, der einen MBP mit 10.6 einschaltet. Manchmal möchte ich sie abmelden, um etwas RAM freizugeben, aber ich möchte vermeiden, mich als sie anzumelden, mich abzumelden und mich dann wieder als ich anzumelden.

Ich habe eine Terminal-Lösung gesehen ... gibt es einen besseren Weg? Vielen Dank!

Richard Herron
quelle
5
Sie müssen besser definieren, "gibt es einen besseren Weg". Für mich ist nicht viel (rechnerisch) besser als ein Terminal. Wenn Sie eine App möchten, verpacken Sie den Terminalbefehl einfach in eine Automator- oder Applescript-App.
2
@mankoff, guter Punkt! Aber dies ist kein Arch Linux-Forum, also nehmen wir an, ich möchte eine GUI / integrierte Lösung :). Aber Sie haben Recht, ich kann nur ein Shell-Skript schreiben.
Richard Herron
2
Hier ist der Link zur Skriptlösung (ich habe ihn vor dem Posten gesehen, aber er stammt aus dem Jahr 2005, daher habe ich angenommen, dass diese einfache Funktion jetzt in die GUI integriert sein muss). forums.macrumors.com/showthread.php?t=118545
Richard Herron
Es gibt keine eingebaute GUI-Lösung, die ich kenne ...
Robert S Ciaccio
OK, danke, alle! Wenn ich ein gutes Skript schreibe, poste ich es hier zurück.
Richard Herron

Antworten:

22

Mit dem Terminal können Sie ihren loginwindowProzess beenden und alle Programme, die sie geöffnet hat, werden geschlossen. Dies führt jedoch dazu, dass sie nicht gespeicherte Arbeit verliert. Tatsächlich ist dies der eigentliche Grund, warum Sie sich als Benutzer anmelden müssen, um sich abzumelden: Wenn Sie sich als Benutzer anmelden, haben alle ihre Programme wieder Zugriff auf die Benutzeroberfläche, sodass Sie aufgefordert werden, das Schließen zu bestätigen, Änderungen zu speichern oder andere Änderungen vorzunehmen Aktion vor dem Abmelden.

Wenn Sie sicher sind, dass sie nur Dinge wie einen Webbrowser, iTunes usw. geöffnet hat, nicht Pages, Word, Photoshop oder irgendetwas anderes mit Dokumenten, können Sie dies vom Terminal aus versuchen:

kill `ps awwwwux | grep her_short_username | grep loginwindow | grep -v grep | awk "{ print \$2 }"`

Unter OSX 10.10.4: (leichte Bearbeitung vom letzten Kommentar):

export pn=`ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 }'`
sudo kill -9 $pn
Josh
quelle
1
Stimmen Sie der Warnung zu, dass Sie, wenn Sie sich nicht anmelden, um zu sehen, was sie gerade tut, nicht wissen, was Sie sie durch das Abmelden kosten könnten.
Michael H.
Ja, du hast recht. Meistens wird im Internet gebrowst ... Aber einmal wird es nicht sein! Vielen Dank!
Richard Herron
4
Wenn Sie sie mit Gewalt beenden, loginwindowkönnen Activity Monitor.appSie bequem zur gleichen Zeit einen Blick auf die anderen Prozesse werfen, die sie offen gelassen hat.
Jari Keinänen
1
Wenn Sie trotzdem Awk grepausführen, können die Mehrfachbefehle leicht vermieden werden. ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 } | xargs killund siehe auch iki.fi/era/unix/award.html#grep
tripleee
1
nur einen Tippfehler in Ihrem aktualisierten Befehl zu beheben, liest sudulesen soll sudo.
Hoss
18

Sie können den Aktivitätsmonitor verwenden , um einen anderen Benutzer abzumelden, indem Sie dessen Anmeldevorgang beenden:

  1. Führen Sie Activity Monitor aus
  2. Geben Sie im Filter oben rechts Folgendes ein loginwindow
  3. Klicken Sie auf die Zeile mit dem Namen des Benutzers in der Benutzer Spalte
  4. Klicken Sie auf Prozess beenden , dann auf Beenden erzwingen und geben Sie Ihr Kennwort ein.

Dies ist nur eine schönere (?) GUI-Version von Joshs Antwort .

Vor Schritt 2 können Sie die laufenden Prozesse der anderen Benutzer überprüfen, um festzustellen, ob sie Apps ausführen, bei denen beim Abmelden möglicherweise Daten verloren gehen.

Bennett McElwee
quelle
Ich habe dies versucht und sehe immer noch die Prozesse des anderen Benutzers, die im Aktivitätsmonitor ausgeführt werden. Es stimmt, dass das Konto im Benutzerwechselmenü abgemeldet angezeigt wird, aber es scheint nicht wirklich dasselbe zu sein wie das Abmelden.
Gorb
8

Dieser Befehl ist einfacher als der vorgeschlagene und hat den Wunsch, alle Prozesse des Benutzers zu beenden (ich musste ihn zweimal ausführen).

sudo pkill -9 -u user

Wenn Sie nur den Anmeldefensterprozess für diesen Benutzer beenden möchten, können Sie Folgendes tun:

sudo pkill -9 -u user loginwindow

Ulukai
quelle
1
Mir scheint, dies ist eine deutlich bessere und idiomatischere Antwort (vom Standpunkt eines Unix-Systemadministrators aus gesehen) als die anderen.
Gregg Leventhal
2

Ich denke, der einfachste Weg ist: sudo killall -9 -u wifes_name

mempman
quelle
Wenn Sie MacOS Mojave verwenden, ist dies die einzige Lösung, nachdem Sie viele ausgeführt haben, die nicht nur den LoginWindow-Prozess, sondern auch viele andere Prozesse dieses Benutzers beendet haben. Das Beenden des LoginWindow-Prozesses für diesen Benutzer allein hat nicht viele andere Prozesse beendet, die von diesem Benutzer gestartet wurden. Diese Lösung (ersetzt durch den Namen meiner Frau) hat jeden einzelnen Prozess beseitigt, der durch ihr Login gestartet wurde. Es ist fast so, als würde man den Computer neu starten und sich einfach selbst anmelden.
i-CONICA
-1

Meiner Meinung nach überwiegt der mögliche Datenverlust bei weitem den möglichen RAM-Gewinn.

Darüber hinaus ist es lange her, dass Unix Speicher auf Festplatte auslagern konnte, als ein Prozess inaktiv war.

mouviciel
quelle
2
Ein Problem besteht darin, dass die Prozesse eines Benutzers, wenn er ausgeschaltet wird, möglicherweise nicht inaktiv sind. Sie können CPU und Speicher zerkauen. Spiele scheinen in dieser Hinsicht besonders schlecht zu sein.
Bennett McElwee
2
Frage erwähnt die Frau, aber es gibt tatsächlich einen noch besseren Fall - wenn Sie ein Kind haben, das sein Zeitlimit für den Tag überschritten hat und nur Spiele spielt und andere Dinge tut, die nicht gespeichert werden müssen. Jetzt müssen Sie sich nicht nur als Kind anmelden, sondern auch Zeit hinzufügen, um sich abzumelden.
Michael
@Michael Das ist genau mein Anwendungsfall. :)
Bennett McElwee