Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Mit Hilfe des Befehls nice können "normale" Befehle mit einer zu definierenden Prozesspriorität aufgerufen werden, mit Hilfe von renice kann die Priorität von laufenden Prozessen geändert werden.
Weitere Möglichkeiten erläutern folgende Artikel:
schedutils - fortgeschrittene Befehle zur Prozesskontrolle (chrt
, taskset
und ionice
)
cpulimit - CPU-Leistung je Prozess einstellen
Die Programme sind in den essentiellen Paketen
coreutils (nice)
bsdutils (renice)
von Ubuntu enthalten und deshalb auf jedem System installiert.
Unter Linux erhält jeder Prozess eine Priorität mit der bestimmt wird, wie viel anteilige Rechenleistung dem Prozess zusteht. Die Priorität liegt im Bereich von -20 bis +19 (in ganzzahligen Schritten), wobei -20 die höchste Priorität (=meiste Rechenleistung) und 19 die niedrigste Priorität (=geringste Rechenleistung) ist. Die Standardpriorität ist 0. Normale Nutzer können Prioritäten von 0 bis 19 einstellen, nur Root darf auch negative Werte vorgeben.
Die Ausführungsgeschwindigkeit eines Befehls bzw. eines Programms kann zwar durch nice beeinflusst werden, hängt aber auch maßgeblich von anderen Faktoren ab wie z.B. der Gesamtzahl der laufenden Prozesse, Zugriffsgeschwindigkeit auf die Festplatte etc.
Anders als häufig angemommen, sollte man einem rechen-intensivem Programm eher einen höheren nice-Wert geben, da dann andere Programme zwischen drin häufiger drankommen. So fühlt sich der PC flüssiger an.
nice wird wie andere Befehle auch in einem Terminal aufgerufen. Die allgemeine Syntax von nice ist recht einfach:
nice -n niceness Befehl
Der Parameter niceness
gibt dabei die Priorität an, "Befehl" ist ein regulärer Befehl bzw. Programmaufruf.
Ein paar Beispiele für die Nutzung von nice:
den Editor Nano mit der Priorität "3" starten:
nice -n 3 nano
den Editor Nano mit Root-Rechten und einer Priorität von "-6" starten:
sudo nice -n -6 nano
den Editor Nano als Prozess des Benutzers "Hans" und einer Priorität von "-9" starten:
sudo nice -n -9 sudo -u Hans nano
den Editor Nano mit einer Priorität von "-12" für den aktuellen Nutzer starten:
sudo nice -n -12 sudo -u $USER nano
oder
nice -n -12 sudo nano
Wie man am zweiten Beispiel sieht, wirkt sich der sudo-Befehl in diesem Fall auch auf den nachfolgenden Befehl (im Beispiel nano) aus. Da nice durch sudo mit Root-Rechten läuft, vererben sich diese Rechte auch an den nachfolgenden Befehl, da dieser durch nice aufgerufen wird und nicht durch die Shell. Dies sollte man unbedingt beachten! Möchte man nur einen "normalen" Prozess ohne Root-Rechte, aber mit einer höheren Priorität (also einem negativem nice-Wert) starten, ist das vierte Beispiel am geeignetsten.
Um die Priorität eines laufenden Prozesses zu ändern, wird der Befehl renice eingesetzt.
renice wird im Terminal aufgerufen. Die allgemeine Syntax von renice ist wie folgt:
renice niceness <Optionen>
niceness
gibt dabei die (neue) Priorität an. Grundsätzlich können normale Benutzer nur die Priorität ihrer eigenen Prozesse im Bereich 0 bis 19 ändern, mit Root-Rechten kann am die Priorität sowohl im Bereich -20 bis 19 sowie für die Prozesse aller Benutzer ändern, siehe auch Prozesspriorität.
renice kennt die folgenden Optionen:
renice - Optionen | |
Option | Beschreibung |
-p PID | renice wird auf den Prozess mit der Prozessidentifikationsnummer PID angewendet. |
-u USER | renice wird auf alle Prozesse des Benutzers USER angewendet. |
-g GRUPPEN-ID | renice wird auf alle Prozesse mit der Prozessgruppenidentifikation GRUPPEN-ID angewendet. |
wird keine der Optionen (-p
, -u
, -g
) angegeben, wird als Standard -p
angenommen, die nachfolgenden Zahlen also als Prozessidentifikationsnummern (PID) interpretiert.
Um die Prozessidentifikationsnummer eines Prozesses zu bestimmen, können die Befehle pstree, ps oder pidof eingesetzt werden.
Im folgenden einige Beispiele für die Nutzung von renice.
Priorität des Prozesses mit der PID 5678 auf "15" ändern:
renice 15 -p 5678
Priorität aller derzeit laufenden Prozesse des Programms nano
auf "-10" ändern:
sudo renice -10 `pidof nano`
Priorität aller Prozesse des Benutzers user
auf "10" ändern:
renice 10 -u user
Priorität der Prozesse mit der PID 1234 und 5678 sowie für alle Prozesse von user
auf "-10" ändern:
sudo renice -10 -p 1234 5678 -u user
Priorität des XServers auf "-10" ändern:
sudo renice -n -10 $(pgrep X)
Diese Revision wurde am 12. Januar 2013 18:33 von aasche erstellt.