En el Administrador de Actividad, puedes ver qué procesos impiden que el sistema se duerma. Sé que el WindowsServer
es un falso positivo, pero otros no lo son.
A veces intento poner mi MacBook a dormir, lo meto en la bolsa y casi se sobrecalienta y se descarga la batería, porque un proceso en segundo plano lo impide dormir.
En particular, estoy hablando de SpringBoard
, lo que me llevó a pedir ayuda. Estaba funcionando, aunque el Simulador de iOS ya no estaba corriendo, un problema conocido desde hace tiempo que Apple parece no reconocer.
Para ayudarme en esta situación, solo quiero matar automáticamente esos procesos. Ya tengo una solución para apagar Wifi y Bluetooth cuando duermo a través de un script bash y quiero extenderlo con algo de código que detecte procesos que impidan dormir.
En este momento no pude matar SpringBoard
, porque fue relanzado por su proceso padre launchd_sim
. Por alguna razón ese proceso sobrevivió a pesar de que Xcode y el Simulador ya no estaban corriendo.
Ahora, he puesto osascript -e 'quit app "launchd_sim"'
en mi script de dormir y la Mac dormirá de nuevo, pero esto es solo una solución temporal.
Necesito algo más robusto. Si no puedo automatizar la matanza de cualquier proceso que bloquee el sueño, al menos sería útil tener algún indicador visual de que mi Mac no puede dormir antes de dejarlo. WindowServer
y bluetoothd
son excepciones a la regla ya que el WindowServer
en realidad no impide dormir y el bluetooth también será desactivado por mí.
No quiero que otros procesos futuros me hagan experimentar esto nuevamente, probablemente no es muy saludable para el dispositivo.
Sé acerca de pmset -g assertions
y mostró:
BackgroundTask 0
ApplePushServiceTask 0 Name Value
UserIsActive 1 ------------- ------------------------------------
PreventUserIdleDisplaySleep 0 ID 8
PreventSystemSleep 0 Description gitea home
ExternalMedia 0 Status Pending
PreventUserIdleSystemSleep 1 Entered 2023-08-18 19:02:30 (3h)
NetworkClientActive 0
antes y después de matar launchd_sim
/ SpringBoard
. Debajo de eso, obtendría una lista de PIDs y allí estaba SpringBoard
, pero ya no. Probablemente podría analizar esto, ¿pero quizás hay algo mucho más simple? ¿No puedo decirle a la Mac que duerma pase lo que pase? No quiero que decida por mí y creo que esto es bastante molesto.
Actualización: Hoy también tuve que deshacerme de apsd
y su servicio de sincronización de libreta de direcciones. Ambos procesos drenaron el 25% de mi batería, mi MBP estaba en mi bolsa y estaba muy caliente cuando lo saqué. Qué demonios Apple, esto es una broma. Ni siquiera uso FaceTime o la Libreta de Direcciones. Ojalá hubiera una forma de forzar el sueño pase lo que pase.