ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

nice

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png 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:

Installation

Die Programme sind in den essentiellen Paketen

  • coreutils (nice)

  • bsdutils (renice)

von Ubuntu enthalten und deshalb auf jedem System installiert.

⚓︎

Prozesspriorität

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.

Hinweis:

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.

Hinweis:

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

Syntax

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.

Beispiele

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 

Hinweis:

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.

renice

Um die Priorität eines laufenden Prozesses zu ändern, wird der Befehl renice eingesetzt.

Syntax

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
OptionBeschreibung
-p PIDrenice wird auf den Prozess mit der Prozessidentifikationsnummer PID angewendet.
-u USERrenice wird auf alle Prozesse des Benutzers USER angewendet.
-g GRUPPEN-IDrenice 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.

Beispiele

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.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Prozesse, Prozesspriorität, System, Shell