staging.inyokaproject.org

Von „Shell/nice“ weitergeleitet.

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 [1]

  • bsdutils (renice))

Befehl zum Installieren der Pakete:

sudo apt-get install coreutils bsdutils 

Oder mit apturl installieren, Link: apt://coreutils,bsdutils

  • 1: nice

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.

Gibt man einem Programm eine hohe Priorität = viel Rechenleistung, kann der Nebeneffekt sein, dass sich das restliche System "zäh" anfühlt, solange das Programm läuft.

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
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.

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) 

  • 1: nice

Diese Revision wurde am 11. April 2020 13:11 von tiger1001 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Prozesse, Prozesspriorität, System, Shell