Jeder Prozess des Systems läuft mit definierter Priorität, auch „nice value“ genannt, die von -20 (höchste Priorität) bis 19 (niedrigste Priorität) reichen kann. Falls nicht explizit definiert, hat jeder Prozess die Standardpriorität 0 (die „Grund“-Priorität). Prozesse mit höherer Priorität (niedrigere „nice value“ bis zu -20) werden bei der Vergabe der CPU-Zyklen öfter berücksichtigt als andere Prozesse mit niedrigerer Priorität (höherer „nice value“). Dadurch bekommen Sie mehr Prozessor-Zyklen. Benutzer (ausser root) können ihre Prozesse nur innerhalb der Werte 0 bis 19 herabstufen. root kann die Priorität jedes beliebigen Prozesses auf jede beliebige Stufe setzen.
Wenn ein oder mehrere Prozesse zuviele Systemressourcen beanspruchen, kann man ihre Priorität herabsetzen anstatt sie sofort zu beenden. Dazu wird das Programm renice benutzt. Die Syntax ist wie folgt:
renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...] |
Hier ist priority der Wert der Priorität, pid die Prozess-ID (benutzen Sie für mehrere Prozesse die Option -p), pgrp die Prozessgruppen-ID (benutzt mit der Option -g) und user (-u für mehr als einen) der Benutzername des Prozessbesitzers.
Nehmen wir an, Sie haben einen laufenden Prozess mit der PID 785, der eine lange wissenschaftliche Berechnung durchführt. Während dieser Zeit wollen Sie ein Spiel spielen, das freie Systemressourcen benötigt. In diesem Fall geben Sie ein:
$ renice +15 785 |
Dadurch wird zwar der Prozess wesentlich länger zur Durchführung der Berechnung benötigen, er belegt aber keine CPU-Zeit, die von anderen Prozessen benötigt wird.
Falls Sie der Systemadministrator sind und feststellen, dass ein Benutzer zu viele Prozesse laufen lässt, die zu viele Systemressourcen verbrauchen, können Sie die Priorität der Prozesse dieses Benutzers mit einem einzigen Befehl ändern:
# renice +20 -u birgit |
Nach diesem Befehl haben alle Prozesse von birgit die niedrigste Priorität und werden Prozesse anderer Benutzer nicht behindern.
Jetzt, da Sie wissen, dass Sie die Priorität von Prozessen ändern können, werden Sie nach einem Kommando fragen, mit dem Sie einen Befehl mit einer definierten Priorität starten können. Dafür benutzen Sie den Befehl nice.
In diesem Fall müssen Sie Ihren Befehl als Option von nice angeben. Die Option -n wird zum Setzen des Prioritätswertes benutzt. Standardmäßig setzt nice diesen Wert auf 10.
Sie wollen beispielsweise ein ISO-Image einer Mandrakelinux-Installations-CD-ROM anfertigen:
$ dd if=/dev/cdrom of=~/mdk1.iso |
Auf manchen Systemen mit Standard-IDE-Geräten kann das Kopieren von großen Dateien zu viel Systemressourcen belegen. Um nun das Blockieren anderer Prozesse durch den Kopierprozess zu vermeiden, starten Sie ihn mit einer niedrigen Priorität:
$ nice -n 19 dd if=/dev/cdrom of=~/mdk1.iso |