Chciałbym uruchomić coś w stylu „sleep 3600; logout”, ale polecenie bash wylogowania zamyka tylko bieżący terminal. Jak zamknąć pełną sesję Mac OS X?
macos
mac
command-line
Grzegorz Adam Hankiewicz
źródło
źródło
alias maclogout="..."
Nie ma „miłego” sposobu wylogowania bieżącego użytkownika z terminalu w OS X. „Nieuporządkowanym” sposobem na to jest zabicie
loginwindow
procesu tego użytkownika . Nieuprzejmie zabije wszystkie procesy (programy) działające pod twoją nazwą użytkownika.Jest to dwuetapowy proces.
W terminalu uruchom to:
Następnie uruchomić
Gdzie
<pid>
jest pierwsza liczba (druga kolumna) z danych wyjściowych powyższego polecenia.Użyj sudo kill -9, aby wymusić zabicie procesu, który musiałem zrobić, aby to zadziałało.
Na przykład, jeśli dane wyjściowe pierwszego polecenia to:
Potem biegłbym
sudo kill 41
, wpisałem hasło, a następnie wylogowałem się.Można to połączyć w alias Bash:
źródło
sudo killall loginwindow
? Przynajmniej 10,7loginwindow
proces wydaje się być natychmiast ponownie otwarty.Wiem, że to stare pytanie, ale pomogło mi, polecenie, którego potrzebowałem w OS X 10.8:
awk
Stwierdzenie jest inny ikill -9
gwarantuje szybka logowania jest pokazane.źródło
Myślę, że znalazłem odpowiedź na to, jak z wdziękiem wylogować się z Mac OS X bez czekania 2 minut.
Zrozumiałem, że przytrzymanie Shift, Option i Command i naciśnięcie „q” wyloguje się z gracją i nie zapyta „czy chcesz się wylogować”.
Więc kodowałem AppleScript za pomocą Automatora, aby:
źródło
Jeśli jesteś zalogowany do powłoki jako ten sam użytkownik, który jest zalogowany do GUI Maca, możesz wydać polecenie bez sudo:
launchctl reboot logout
które dość skutecznie wylogowuje użytkownika; ma tę wadę, że nie zezwala aplikacjom, które wychodzą z monitowania o interakcję podczas zamykania, jednak nie wydaje się sugerować, że jest to to samo, co ich całkowite zabicie, jak mogłoby to zrobićkill
(SIG TERM) lubkill -9
(SIG KILL).źródło
Twierdziłbym, że „najpiękniejszy” sposób może być po OS X 10.9
launchctl gui/$(id -u <username>) bootout
Dokumentację po OS X 10.9 dla launchctl można znaleźć po uruchomieniu
launchctl help
, ale zasadniczo powyższe polecenie spowoduje przerwanie tymczasowej sesji użytkownika. Alternatywą jestlaunchctl user/$(id -u <username>) bootout
zerwanie stałej sesji, która uruchamia demony użytkownika, gdy użytkownik nie jest zalogowany.Można to przetestować, uruchamiając
launchctl gui/$(id -u) bootout
, spowoduje to natychmiastowe wylogowanie i spowoduje, że system wyświetli okno logowania (z pewnym opóźnieniem).źródło
sudo launchctl bootout gui/XXX
gdzieXXX
jest numeryczny identyfikator użytkownika (UID). Zauważ, że i)bootout
komenda jest pierwsza, a ii)$(id)
zwraca znacznie więcej niż identyfikator UID.Przyjemnym narzędziem do dodania do terminala jest komenda wylogowania , która może być używana jako:
Oto jak:
Edytuj swój .bash_profile
nano ~/.bash_profile
Dodaj tę linię:
logout() {sudo launchctl bootout user/$(id -u "$1")}
Zapisz plik naciskając
ctrl+x
Uruchom ponownie terminal
Jesteś gotowy do drogi;)
źródło