Come impedire l'esecuzione dei lavori cron durante determinati periodi in Debian? (una "modalità di gioco" / "modalità di esecuzione")


12

Sembra che ho logcheck impostato come un lavoro cron e ogni volta che è processo di esecuzione grepda parte logcheckoccupa circa ¼ della mia CPU.

Ora ho alcuni periodi durante i quali ho bisogno della mia piena capacità della CPU e il mio sistema occupa il minor numero di risorse possibile tranne che per specifici / processi (che forse potrei specificare in qualche modo).

È possibile impostare il mio Debian 9.1 con la macchina KDE in una sorta di modalità prestazioni (o 'Modalità gioco') che impedisce ai processi non esplicitamente avviati dall'utente di occupare molte risorse di sistema, riduce il carico di processi in background e, soprattutto, : ritarda i lavori cron fino a quando quella modalità non viene nuovamente arrestata?


6
Una soluzione semplice sarebbe quella di non eseguire logcheck nel processo cron, ma invece di scrivere uno script personalizzato ed eseguirlo nel processo cron. Nello script, esegui prima i controlli necessari, quindi esegui il controllo di controllo alla fine dello script se tali controlli hanno esito positivo.
SauceCode

5
Controlla la priorità. Se è stato ridotto a 19, funziona solo quando la CPU non ha nient'altro da fare.
Thorbjørn Ravn Andersen,

Risposte:


18

Se "determinati orari" non sono fissi, ovvero si desidera specificare manualmente quando il sistema entra e esce dalla "modalità prestazioni", è possibile semplicemente interrompere e avviare cron:

sudo systemctl stop cron

impedirà l'esecuzione di qualsiasi cron job e

sudo systemctl start cron

li riattiverà.

Puoi anche dare un'occhiata anacroninvece che cron, potrebbe essere più semplice modificare a livello globale in un modo che si adatti ai tuoi usi.


12

Vorrei prendere in considerazione due approcci

  1. Lascia intatta la pianificazione ma esegui tutti i cronlavori in corso nicee, eventualmente, anche ionice:

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
  2. Non consentire cronlavori in determinati periodi. Ricorda che qualsiasi utente in grado di creare (o rimuovere) il file flag può controllare questo approccio. Ciò potrebbe funzionare se si desidera avere una modalità di gioco impostata su richiesta , aggiungendo i comandi touche rmallo script di avvio del gioco. (Potrebbe essere necessario utilizzare /tmpanziché /var/run, ma è banalmente aperto a qualsiasi utente.)

    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 volta impostato, nessuno dei due approcci richiede l'accesso come root. Inoltre puoi decidere in anticipo quali lavori dovrebbero essere soggetti a questo controllo e quali no.


1
Corretta. Perché il collo di bottiglia di un processo quando c'è molta CPU disponibile? Le priorità del sistema operativo si attivano quando c'è scarsità, non arbitrariamente.
Salterio,

Non credo che la -c3 -n7combinazione abbia senso, almeno su Linux. La classe di programmazione inattiva non ha priorità.
gardenhead,

@gardenhead oops hai ragione. Uso -c2 -n7me stesso ma quando ho lasciato la classe inattiva per questa risposta ho omesso di rimuovere la priorità.
roaima,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.