Ermitteln, ob der Mac wach ist oder sich im Dark Wake befindet

Atelis

Akerö
Registriert
01.03.07
Beiträge
1.835
Hallo Experten,

ich schreibe zur Zeit ein kleines Programm in Java und möchte per Shellbefehl ermitteln, in welchem Zustand sich der Mac befindet: ob er wach ist oder sich im Dark Wake Modus befindet.

Nach Internet-Recherchen habe ich mir folgende Befehlszeile zusammengebaut, die mir liefert, was ich brauche:
Code:
pmset -g log | grep -e " Sleep  " -e " Wake  " | tail -n 1



Sie erzeugt beispielsweise ein Ausgabe wie

Code:
2015-08-09 16:05:45 +0200 Wake                    DarkWake to FullWake [CDNVA] due to HID Activity: Using AC


oder
Code:
2015-08-09 16:05:29 +0200 Sleep                   Entering Sleep state due to 'Maintenance Sleep': Using AC TCPKeepAlive=active    7 secs



Mit dem Ergebnis könnte ich weiter arbeiten, allerdings braucht der Befehl "pmset -g log" mehr als 8 Sekunden bei mir und lastet einen Kern zu 100% aus, da es sich scheinbar im eine große Log-Datei handelt. Das dauert mir zu lange und ist mir zu resourcenhungrig.

Daher meine Frage an euch: Gibt es eine Möglichkeit den Befehl "pmset -g log" zu beschleunigen oder gibt es gar eine bessere Methode, um den Zustand zu ermitteln? Ich suche etwas, was mir in weniger als einer Sekunde die benötigten Infos liefern kann.

Vielen Dank im Voraus und viele Grüße!

Atelis
 
Zuletzt bearbeitet:

Atelis

Akerö
Registriert
01.03.07
Beiträge
1.835
Ich bin nun nach vielem Herumprobieren endlich zu einem Ergebnis gekommen:
Code:
syslog -F '$(Sender): $Message' -k Time ge 1439380000 | grep -i -e "kernel: full wake" -e "system sleep" | tail -n 1



Dieser Befehl liefert mir die letzte Zeile aus dem Systemlog, die entweder ein "kernel: full wake" oder "system sleep" enthält (Groß-/Kleinschreibung spielt durch "-i" keine Rolle) und fängt erst ab dem Unix-Zeitpunkt "1439380000" an zu suchen. Der Zeitstempel ist der Zeitpunkt meines letzten Checks und so bekomme ich nur die neuen Einträge.
Andernfalls bekomme ich eine der folgenden Zeilen als Rückmeldung:
Code:
kernel: full wake promotion (reason 1) [...]
kernel: ARPT: [...] : AirPort_Brcm43xx::powerChange: System Sleep



So erfahre ich jetzt, ob der Mac wach ist oder sich im Dark Wake Modus befindet.

EDIT: Der Eintrag mit "System Sleep" kommt auch jedes Mal, wenn der Mac vom Dark Wake wieder in den Sleep wechselt, deswegen kann dieser öfter nacheinander kommen.

Viele Grüße

Atelis
 
Zuletzt bearbeitet: