Ich interessiere mich immer mehr für die Verwendung von Terminal als alternative Möglichkeit, um Lösungen auf meinem Mac zu adressieren. Ich habe die Frage mit dem Titel "Gibt es eine bessere Möglichkeit, OSX herunterzufahren / neu zu starten?" .
Ich würde deshalb gerne wissen:
Wie kann ich meinen Mac mit dem Befehl "Terminal" exklusiv herunterfahren, neu starten und in den Ruhezustand versetzen?
Antworten:
Der Befehl, nach dem Sie suchen, ist Herunterfahren . Dies informiert alle Benutzer darüber, dass der Computer heruntergefahren wird, und weist alle Apps an, Dateien usw. zu schließen.
Der Befehl benötigt einen Parameter -h, -r oder -s, um den Mac herunterzufahren, neu zu starten oder in den Ruhezustand zu versetzen.
Der Befehl muss als root ausgeführt werden, damit Sie sudo verwenden können.
zB um die Maschine sofort neu zu starten
zB um die Maschine in 60 Minuten auszuschalten
Aus Kommentaren ergeben sich zwei Punkte, die angesprochen werden müssen
Das Herunterfahren funktioniert, indem ein sigterm an alle Prozesse gesendet wird, die sich dann damit befassen sollen, z. B. offene Dateien speichern usw. Wenn sie nicht beendet werden, erhalten sie ein SIGKILL, das sie zwingt, ohne Antwortmöglichkeit zu sterben. Die Signale werden nicht über die normale Schlüssel-Nachrichtenwarteschlange gesendet, daher müssen Apps diese getrennt von dem Code behandeln, der vom Verlassen des Menüs aufgerufen wird. Eine gute App sollte gemeinsamen Code von beiden aufrufen.
Diese andere Antwort zeigt, wie Sie herunterfahren, als ob Sie die Menüoptionen treffen. Beachten Sie jedoch, dass Apps das Herunterfahren abbrechen können
quelle
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
. Ich habe es Alias in einer Datei, die in meinem .bash_profile wie folgt bezogen wird:alias lock='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
Fahren Sie das System herunter, ohne einen Bestätigungsdialog anzuzeigen:
Nach dem Anzeigen eines Bestätigungsdialogs herunterfahren:
Neustart ohne Anzeige eines Bestätigungsdialogs:
Neustart nach Anzeige eines Bestätigungsdialogs:
Melden Sie sich ab, ohne einen Bestätigungsdialog anzuzeigen:
Melden Sie sich nach dem Anzeigen eines Bestätigungsdialogs ab:
Geh schlafen (
pmset
):Geh schlafen (AppleScript):
Versetzen Sie Displays in den Ruhezustand (10.9 und höher):
Die vier Buchstabencodes für die Apple-Ereignisse sind in aufgeführt
AERegistry.h
.Alle Systemereignisse Befehle oben schicken Apple - Ereignisse an den
loginwindow
Prozess.loginwindow
Es werden dieselben Apple-Ereignisse wie oben gesendet, wenn Sie sich abmelden, neu starten, herunterfahren oder den Mac normal in den Energiesparmodus versetzen. Siehe Technische Fragen und Antworten QA1134: Programmgesteuertes Auslösen von Neustart, Herunterfahren und / oder Abmelden .Laut
man shutdown
,shutdown -h now
undshutdown -r now
sendet verarbeitet einTERM
Signal , gefolgt von einemKILL
Signal.Laut Daemons and Services Programming Guide wird beim Abmelden
loginwindow
einKILL
Signal an Prozesse gesendet, die eine plötzliche Beendigung unterstützen , und Prozesse, die eine plötzliche Beendigung nicht unterstützen, werden auf verschiedene Arten beendet: Kakaoanwendungen erhalten dieapplicationShouldTerminate:
Delegierungsmethode, Vordergrundanwendungen Empfangen deskAEQuitApplication
Apple-Ereignisses, Hintergrundanwendungen empfangen daskAEQuitApplication
Apple-Ereignis, gefolgt von einemKILL
Signal, und Daemons empfangen nach einigen Sekunden einTERM
Signal, gefolgt von einemKILL
Signal.quelle
Sofort herunterfahren:
Wenn Sie das Herunterfahren verzögern möchten, können Sie stattdessen die folgende Befehlssyntax verwenden:
(-h Zeit für das Herunterfahren des Parameters, wobei (+) 30 Minuten zum Stoppen des Systems erforderlich sind)
quelle
auch nützlich, um sich von der Eingabeaufforderung des Terminals abzumelden, geben Sie "exit" ein:
quelle
Ctrl-D
ab, da die Befehlszeilenhistorie dadurch nicht verschmutzt wird.