nice ionice für Teile eines Scripts

14/10/2011 - 00:56 von Werner Holtfreter | Report spam
Hallo,

in einem bash-script sollen ein *Teil* der Befehle mit
nice -n 19 ionice -c 3
laufen. Muss man die Priorisierung vor jeden einzelnen Befehl setzen oder
kann man klammern und [io]nice vor die Klammer setzen oder vor Schleifen,
etwa in dieser Art:

nice -n 19 ionice -c 3 # oder dieses auf
while [ $i -ge 2 ] # *eine* Zeile?
do
mv backup.$[i-1] backup.$i
i=$[i-1]
done


nice -n 19 ionice -c 3
{
echo $(date +%F' '%T)" IM HINTERGRUND: kopieren + loeschen"
cp -alx backup.0 backup.1
rm -rf backup.delete
} &
Gruß Werner
Darum geht es beim Abschreiben von Schulden: Der Schuldner ràumt ein, dass
er nicht zahlen kann. Der Glàubiger ràumt ein, dass er ein Idiot gewesen
ist. Bill Bonner
 

Lesen sie die antworten

#1 Stefan Reuther
14/10/2011 - 18:34 | Warnen spam
Werner Holtfreter wrote:
in einem bash-script sollen ein *Teil* der Befehle mit
nice -n 19 ionice -c 3
laufen. Muss man die Priorisierung vor jeden einzelnen Befehl setzen oder
kann man klammern und [io]nice vor die Klammer setzen oder vor Schleifen,
etwa in dieser Art:

nice -n 19 ionice -c 3 # oder dieses auf
while [ $i -ge 2 ] # *eine* Zeile?
do
mv backup.$[i-1] backup.$i
i=$[i-1]
done



nice/ionice sind typischerweise externe Programme, die mit Shellsyntax
nichts anfangen können. Du kannst aber eine ensprechend nette Shell starten:
nice -n 19 ionice -c 3 sh -c 'while [ $i -ge 2 ]; do ; done'

Nachteil ist natürlich, dass du aus der while-Schleife keine
Umgebungsvariablen mehr rausbekommst, und Variablen, die reinsollen,
exportiert werden müssen.

Alternativ kannst du natürlich einfach Tipparbeit sparen, indem du die
Nettigkeiten in eine Funktion packst:
run() {
nice -n 19 ionice -c 3 "$@"
}
while [ $i -ge 2 ]; do
run mv backup.$[i-1] backup.$i
i=$[i-1]
done
Das mache ich generell gerne, um dann in 'run' auch sowas wie Logging
einbauen zu können.


Stefan

Ähnliche fragen