Coraz bardziej interesuje mnie korzystanie z terminalu jako alternatywnego sposobu rozwiązywania problemów na komputerze Mac. Widziałem to pytanie zatytułowane „Czy istnieje lepszy sposób na zamknięcie / ponowne uruchomienie OSX?” .
Chciałbym zatem wiedzieć:
Jak zamknąć, ponownie uruchomić i uśpić komputer Mac wyłącznie przy użyciu polecenia Terminal?
Odpowiedzi:
Polecenie, którego szukasz, zostało zamknięte . Informuje to wszystkich użytkowników, że urządzenie zostanie wyłączone, i nakazuje wszystkim aplikacjom zamknięcie plików itp.
Polecenie przyjmuje parametr -h, -r lub -s, aby zamknąć, ponownie uruchomić lub uśpić komputer Mac.
Polecenie musi być uruchomione jako root, więc musisz użyć sudo.
np. aby natychmiast ponownie uruchomić komputer
np. aby wyłączyć maszynę w 60 minut
W komentarzach należy zwrócić uwagę na dwie rzeczy
Zamknięcie polega na wysłaniu sigterm do wszystkich procesów, które powinny sobie z tym poradzić, np. Zapisać otwarte pliki itp. Jeśli nie wyjdą, otrzymają SIGKILL, który zmusza ich do śmierci bez szansy na odpowiedź. Sygnały nie są wysyłane przez normalną kolejkę wiadomości z kluczem, więc aplikacje muszą sobie z tym poradzić osobno do kodu wywoływanego z wyjścia z menu. Dobra aplikacja powinna wywoływać wspólny kod z obu.
Ta druga odpowiedź pokazuje, jak zamknąć system, jakbyś nacisnął opcje menu. Pamiętaj jednak, że aplikacje mogą anulować to zamknięcie
źródło
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
. Mam go w pliku, który pochodzi z mojego .bash_profile, w następujący sposób:alias lock='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
Zamknij bez wyświetlania okna dialogowego potwierdzenia:
Zamknij po wyświetleniu okna dialogowego potwierdzenia:
Uruchom ponownie bez wyświetlania okna dialogowego potwierdzenia:
Uruchom ponownie po wyświetleniu okna dialogowego potwierdzenia:
Wyloguj się bez wyświetlania okna dialogowego potwierdzenia:
Wyloguj się po wyświetleniu okna dialogowego potwierdzenia:
Idź spać (
pmset
):Idź spać (AppleScript):
Przełącz ekrany w tryb uśpienia (10.9 i nowsze):
Cztery litery kodów zdarzeń Apple są wymienione w
AERegistry.h
.Wszystkie powyższe polecenia Zdarzenia systemowe wysyłają zdarzenia Apple do
loginwindow
procesu.loginwindow
wysyłane są te same zdarzenia Apple, co powyżej, gdy wylogujesz się, uruchomisz ponownie, zamkniesz lub uśpisz komputer Mac. Patrz techniczne pytania i odpowiedzi QA1134: Programowo powodujące ponowne uruchomienie, zamknięcie i / lub wylogowanie .Według
man shutdown
,shutdown -h now
ishutdown -r now
wysłać przetwarzaTERM
sygnał, po którym następujeKILL
sygnał.Zgodnie z Przewodnikiem programowania demonów i usług , gdy użytkownik
loginwindow
chce się wylogować, procesy obsługujące nagłe zakończenie są wysyłaneKILL
sygnał, a procesy, które nie obsługują nagłego zakończenia, są kończone na różne sposoby: aplikacje kakao otrzymująapplicationShouldTerminate:
metodę delegowania, aplikacje pierwszego planu odbierakAEQuitApplication
zdarzenie Apple, aplikacje działające w tle odbierająkAEQuitApplication
zdarzenie Apple, a następnieKILL
sygnał, a demony odbierająTERM
sygnał, a następnieKILL
sygnał po kilku sekundach.źródło
Wyłącz natychmiast:
Jeśli masz ochotę opóźnić zamknięcie, możesz użyć następującej składni komend:
(-h parametr ustawia czas do zamknięcia, gdzie (+) 30 minut, aby zatrzymać system)
źródło
przydatne również, aby wylogować się z wiersza poleceń terminala, wpisz „exit”:
źródło
Ctrl-D
się wylogować, ponieważ nie zaśmieca historii wiersza poleceń.