3 votos

¿Cómo detener todos los procesos que evitan el modo de suspensión a través de la Terminal?

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.

2voto

dh. Puntos 1321

De acuerdo, así que se me ocurrieron estos tres alias que al menos deberían ayudarme a prevenir esta situación, con suerte:

alias cansleep="test ! $(pmset -g assertions | grep SystemSleep | grep -v 0)"
alias sleepnow="pmset sleepnow"
alias gosleep="cansleep && sleepnow || open -a 'Activity Monitor' && test"

En lugar de simplemente cerrar la tapa, ejecutaré gosleep en la terminal. Debería mostrar un mensaje de error si hay un proceso que impide el sueño.

Desafortunadamente, es posible que la MacBook comience a dormir con un retraso de todos modos, lo cual sigue siendo una ventana de tiempo en la que un proceso que impide el sueño del sistema podría iniciarse, pero es una mejora.

Dado que mi objetivo es evitar que esto suceda por completo, no considero mi respuesta muy buena, pero es lo más cercano a prevenir el problema que pude idear (hasta ahora).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X