17 votos

Evite la suspensión si el uso de CPU es alto

Hay una manera sencilla de prevenir la PC de irse a dormir, si hay una alta actividad de la CPU? Necesito ejecutar largo de los procesos de la noche a la mañana, así que quiero el PC para mantenerse mientras mis procesos se están ejecutando, sin ningún tipo de actividad del usuario, pero cuando haya terminado el procesamiento, el PC debería ir a dormir después de que el sueño de tiempo de espera.

Una solución con un "resetSleepTimer", función que puedo llamar desde mi código (python idealmente) también sería aceptable.


Una aclaración siguientes comentarios de WinEunuuchs2Unix y Joaquín Ayuso de Paúl: lamentablemente, su solución sólo funciona si hay un solo proceso, pero no suelen tener más de un proceso en ejecución, con duración variable, de manera que si un proceso termina y vuelve a habilitar un corto sueño de tiempo de espera, va sc*@w sobre las demás siguen funcionando. Con resetSleepTimer función, me refiero a algo que se llama a intervalos regulares para restablecer el temporizador de suspensión. Mi anterior (eliminado) sugerencia de la simulación de una entrada de usuario que no iba a funcionar, porque también mantendría la pantalla.


Edit: un requisito como se mencionó en un comentario OP:

Será esto de salir de la pantalla en la que todo el tiempo? No es lo que estoy buscando. También, se actúa sobre el protector de pantalla también afectan el sueño o suspender el tiempo de espera?

10voto

En base de este hilo, puede deshabilitar el proceso del sueño a través de la duración de su programa llamando a la inactividad de la inhibición a través de DBus:

org.freedesktop.ScreenSaver.Inhibit

O usted puede hacer ping periódicamente:

org.freedesktop.ScreenSaver.SimulateUserActivity

Si usted necesita para evitar que el equipo dormir en absoluto, puede deshabilitar temporalmente (de nuevo a través de dBus) el comportamiento y, a continuación, volverá a activar. Este le saque el protector de pantalla, pero no deje que el equipo de sueño:

  $ sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'

5voto

WinEunuuchs2Unix Puntos 1032

Descubrir su actual configuración del modo de reposo con esto:

$ gsettings list-recursively | grep sleep
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'suspend'
org.gnome.settings-daemon.plugins.power button-sleep 'suspend'
org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0
org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'suspend'

Mi sistema está configurado para que nunca se vaya a dormir, pero si lo tuyo es el conjunto durante 5 minutos (300 segundos) tendría este aspecto:

org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 300

Cuando su programa en python empieza a emitir el comando:

gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0

Cuando su programa en python termina restaurar la configuración anterior:

gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 300

Su configuración de protector de pantalla se encuentran relacionados a los tiempos:

$ gsettings list-recursively | grep top.screensaver
org.gnome.desktop.screensaver picture-opacity 100
org.gnome.desktop.screensaver logout-enabled false
org.gnome.desktop.screensaver lock-enabled false
org.gnome.desktop.screensaver logout-delay uint32 7200
org.gnome.desktop.screensaver embedded-keyboard-enabled false
org.gnome.desktop.screensaver primary-color '#023c88'
org.gnome.desktop.screensaver idle-activation-enabled true
org.gnome.desktop.screensaver secondary-color '#5789ca'
org.gnome.desktop.screensaver logout-command ''
org.gnome.desktop.screensaver color-shading-type 'solid'
org.gnome.desktop.screensaver embedded-keyboard-command ''
org.gnome.desktop.screensaver show-notifications false
org.gnome.desktop.screensaver picture-options 'zoom'
org.gnome.desktop.screensaver lock-delay uint32 0
org.gnome.desktop.screensaver show-full-name-in-top-bar true
org.gnome.desktop.screensaver picture-uri 'file:///usr/share/backgrounds/gnome/adwaita-lock.jpg'
org.gnome.desktop.screensaver status-message-enabled true
org.gnome.desktop.screensaver ubuntu-lock-on-suspend false
org.gnome.desktop.screensaver user-switch-enabled true

Edit script basado en la actividad del sistema

OP ha aclarado necesidades. Varios puestos de trabajo puede estar en ejecución. El primero que termina sería reactivar el sueño, que evitará el resto de los trabajos de finalización.

Una versión reducida de este script es necesario:

movie.sh status display 2.png

  • La eliminación de atenuación / abrillantado de monitores
  • Retirar de la lista de los selectivos de los monitores de proceso
  • Quitar los cheques para teclado / ratón de inactividad (que gnome usa para dormir activación)
  • Reducir drásticamente el resumen de estadísticas de pantalla o eliminar todos juntos

A continuación, el código usando xprintidle (teclado y ratón de tiempo no utilizado) necesita ser arrancado y se reemplaza con:

$ uptime
 08:08:54 up 9 days,  3:38,  1 user,  load average: 0.30, 0.47, 0.71

El promedio de carga impresiones durante 1 minuto, 5 minutos y 15 minutos. Una vez 5 minutos o 15 minutos está por debajo del umbral, simplemente suspender el sistema.


Las pruebas de desarrollo

Para iniciar las pruebas de ejecutar esto en una terminal:

$ while true ; do uptime; sleep 300; done
 08:20:36 up 9 days,  3:50,  1 user,  load average: 0.36, 0.50, 0.64

Cada cinco minutos, el promedio de carga se mostrará para darle una idea de dónde están sus límites deben suspender.


El uso de seguimiento

Después de que el programa ha sido implementado puede que desee auditoría de uso. Para el seguimiento de la suspensión de la actividad (ahorro de energía?) esta secuencia de comandos se puede utilizar:

$ suspendtime
Oct 31 05:55:19 to Oct 31 16:54:26 lasting 39,547 seconds
 (... SNIP ...)
Nov 08 07:24:31 to Nov 08 09:28:44 lasting 7,453 seconds
Nov 08 23:26:19 to Nov 09 07:38:50 lasting 29,551 seconds

Linux uptime 791,119 seconds (9 days, 3 hours, 45 minutes, 19 seconds)
18 Suspends 494,551 seconds (5 days, 17 hours, 22 minutes, 31 seconds)
Real uptime 296,568 seconds (3 days, 10 hours, 22 minutes, 48 seconds)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: