[Ubuntu] Cron job periodicitet baserat på server load?

Permalänk
Medlem

[Ubuntu] Cron job periodicitet baserat på server load?

Japp, jag kör nu ett cron job varje timme men skulle behöva köra det lite oftare än så MEN har tidsvis relativt begränsade resurser så vill inte köra "jobbet" allt för ofta vid vissa tillfällen.

Det smartaste hade ju varit om det gick att fixa så att cron jobbet körs oftare när server loaden är låg (varannan minut) & 1 gång i timmen vid hög server load & allt därimellan.

Jag har inte hittat något inbyggt stöd (?) i cron för detta & enda egentliga som jag själv kommit på är att cron jobbet körs ALLTID (att köra själva cron jobbet/kommandot i sig är ju inte intensivt utan är ju det som cron jobbet anropar som är intensivt) varannan minut oavsett load & kör en proxy/routing fil/program som kollar upp server loaden & därefter antingen godkänner eller nekar jobbet & för jobbet vidare till nästa steg MEN jag har så dåliga Linux kunskaper så vet inte om jag skulle lyckas implementera detta.

Så några förslag eller tips?

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
SpelClockers

Du kan starta ditt jobb med kommandot `nice` för att ge ditt jobb lägre (eller högre) prioritet. På så sätt så kommer ditt jobb att köras men om några andra processer behöver CPU-tid så prioriterar kärnan dessa.

Som ett exempel, packa ihop filer med lägsta prioritet (-20 är högsta prio, 19 är lägsta, default 0):

nice -n 19 tar cvzf archive.tgz largefile

Om det är I/O som du behöver så kan du använda dig av `ionice` istället.

Permalänk
Medlem

Tack så mycket för svaret men är nog tyvärr inte riktigt det jag är ute efter då cron jobbet ändå alltid kommer att köra vid sina förutbestämda tider, förvisso med lägre prioritet men kommer alltid att köras.

Skulle vilja ha bättre kontroll med mer policy liknande funktionalitet (eller vad man nu skall kalla det), så jag både kan köra färre & enklare cron job vid låg belastning & lite fler & tyngre cron jobs vid låg belastning, dom tyngre jobben får inte köras alls vid hög belastning, inte ens med reducerad prioritet.

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Medlem

Kör scriptet på utsatt tid i crond, meni scriptet så gör du en check om loaden är högre än X.

#!/bin/bash LOAD_AVG=$(cat /proc/loadavg | awk '{print $1}') LOAD_LIMIT="1" LOAD_COMP=`echo "$LOAD_AVG > $LOAD_LIMIT" | bc` # echo "---DEBUG---" # echo $LOAD_AVG # echo $LOAD_LIMIT # echo $LOAD_COMP # echo "---DEBUG---" if [ "$LOAD_COMP" -gt "0" ]; then echo "load is too high.." else echo "run my stuff..." fi

Visa signatur

Cisco - Linux - VMWare
-- Citera mig om ni vill få återkoppling --