Bei hoher systemlast nicht ausführen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Bei hoher systemlast nicht ausführen

Beitrag von blackm » 18.01.2014 14:02:57

Hallo zusammen,

ich möchte ein Script nur ausführen wenn die Systemlast unter zwei ist....mein Ansatz ist /proc/loadavg auszuwerten, aber

Code: Alles auswählen

if [ $LOAD -le 2 ]
klappt nicht, weil ich aus /proc/loadavg nur einen String bekomme, keine Zahl....

Hat jemand etwas ähnliches schon mal gemacht?
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

DeletedUserReAsG

Re: Bei hoher systemlast nicht ausführen

Beitrag von DeletedUserReAsG » 18.01.2014 14:27:59

Bisschen seltsam: http://www.tldp.org/LDP/abs/html/untyped.html
Mag der Fehler woanders liegen?

Edit:

Code: Alles auswählen

if [ $LOAD \< '2.0' ]; …
… scheint den Job zu tun.

Edit2: '2' kann auch ohne „.0“ da stehen.
Edit3: eigentlich musses nicht mal gequotet sein. -le erwartet Integers, <, >, = sind da nicht wählerisch.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Bei hoher systemlast nicht ausführen

Beitrag von Cae » 18.01.2014 15:04:23

Du solltest dir mal batch(1) anschauen:
man 1 batch hat geschrieben:

Code: Alles auswählen

       batch   executes commands when system  load  levels  permit;  in  other
               words,  when  the  load  average  drops below 1.5, or the value
               specified in the invocation of atd.
Damit kannst du dir erneute Implementation ersparen.

Ich wuerde dafuer allerdings

Code: Alles auswählen

if awk '{exit($1>2)}' </proc/loadavg; then
	echo 'load too high'
	exit 1
fi
verwenden. Alternativ koennte man fuer die Felder $2 oder $3 anstatt des 1-Minuten-Durchschnitts den fuer fuenf oder 15 Minuten zu Rate ziehen.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Bei hoher systemlast nicht ausführen

Beitrag von blackm » 18.01.2014 22:59:59

Hallo ihr zwei,

vielen Dank für die Antworten. Ich habe niemands Vorschlag übernommen.

Von at habe ich schon mal was gelesen, batch kannte ich aber noch nicht.
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Bei hoher systemlast nicht ausführen

Beitrag von peschmae » 20.01.2014 09:05:01

Für viele derartige Probleme (z.B. das löschen alter Backups, Deduplizierung, etc) benutze ich mittlerweile ionice -c idle $foo. Je nach dem was genau das Ziel ist auch eine Alternative...

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Bei hoher systemlast nicht ausführen

Beitrag von blackm » 20.01.2014 12:00:07

Ja, der cronjob wird bei mir auch mit ionice gestartet :)
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Antworten