¿Cómo evitar que se ejecuten trabajos cron durante ciertos momentos en Debian? (un 'modo de juego' / 'rendimiento')

12

Parece que he puesto logcheck como una tarea programada y siempre que sea proceso de ejecución greppor logchecktoma alrededor de una cuarta parte de mi CPU.

Ahora tengo ciertos momentos durante los cuales necesito toda la capacidad de mi CPU y hago que mi sistema tome la menor cantidad de recursos posible, excepto para procesos / procesos específicos (que tal vez podría especificar de alguna manera).

¿Es posible configurar mi Debian 9.1 con la máquina KDE en algún tipo de modo de rendimiento (o 'modo de juego') que evite que los procesos no iniciados explícitamente por el usuario consuman muchos recursos del sistema, reduzca la carga de procesos en segundo plano y lo más importante : retrasa los trabajos cron hasta que ese modo se vuelva a detener?

MYNDSTREAm
fuente
66
Una solución simple sería no ejecutar logcheck en el trabajo cron, sino escribir un script personalizado y ejecutarlo en el trabajo cron. En la secuencia de comandos, primero realice las verificaciones que necesite y luego ejecute logcheck al final de la secuencia de comandos si todas esas verificaciones pasan.
SauceCode
55
Verifica la prioridad. Si se ha reducido a 19, solo se ejecuta cuando la CPU no tiene nada más que hacer.
Thorbjørn Ravn Andersen

Respuestas:

18

Si "ciertos tiempos" no son fijos, es decir , si desea especificar manualmente cuándo su sistema ingresa y sale del "modo de rendimiento", simplemente puede detener y comenzar cron:

sudo systemctl stop cron

evitará que se ejecuten trabajos cron y

sudo systemctl start cron

los volverá a habilitar.

También puede verificar en anacronlugar de cron, podría ser más fácil ajustar globalmente de una manera que se ajuste a sus usos.

Stephen Kitt
fuente
12

Consideraría dos enfoques

  1. Deje la programación intacta pero ejecute todos los crontrabajos nice, y posiblemente incluso ionice:

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
  2. No permita ningún crontrabajo durante ciertos momentos. Recuerde que cualquier usuario que pueda crear (o eliminar) el archivo de marca puede controlar este enfoque. Eso podría funcionar si desea tener un modo de juego que se configure bajo demanda , agregando los comandos touchy rmal script de inicio de su juego. (Es posible que necesite usar en /tmplugar de /var/run, pero luego está trivialmente abierto para cualquier usuario).

    0 18 * * *      root    touch /var/run/no_cron
    0 19 * * *      root    rm -f /var/run/no_cron
    
    0 * * * *       root    test ! -f /var/run/no_cron && /some/command...
    

Una vez configurado, ninguno de los enfoques requiere acceso de root. Además, puede decidir de antemano qué trabajos deben estar sujetos a este control y cuáles no.

roaima
fuente
1
Correcto. ¿Por qué bloquear un proceso cuando hay mucha CPU disponible? Las prioridades del sistema operativo se activan cuando hay escasez, no de manera arbitraria.
MSalters
No creo que la -c3 -n7combinación tenga sentido, al menos en Linux. La clase de programación inactiva no tiene prioridades.
cabeza de jardín
@gardenhead oops tienes razón. Me uso, -c2 -n7pero cuando dejé la clase inactiva para esta respuesta, omití eliminar la prioridad.
roaima