[[Vorlage(getestet, general)]] {{{#!vorlage Wissen [:Terminal:Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] Mit Hilfe des Befehls [#nice nice] können "normale" Befehle mit einer zu definierenden Prozesspriorität aufgerufen werden, mit Hilfe von [#renice 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 = Installation = Die Programme sind in den essentiellen Paketen {{{#!vorlage Paketinstallation coreutils, (nice) bsdutils, renice) }}} von Ubuntu enthalten und deshalb auf jedem System installiert. [[Anker(prio)]] = 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 [:sudo:Root] darf auch negative Werte vorgeben. {{{#!vorlage 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl nice -n 3 nano }}} * den Editor Nano mit [:sudo:Root-Rechten] und einer Priorität von "-6" starten: {{{#!vorlage Befehl sudo nice -n -6 nano }}} * den Editor Nano als Prozess des Benutzers "Hans" und einer Priorität von "-9" starten: {{{#!vorlage Befehl sudo nice -n -9 sudo -u Hans nano }}} * den Editor Nano mit einer Priorität von "-12" für den aktuellen Nutzer starten: {{{#!vorlage Befehl sudo nice -n -12 sudo -u $USER nano }}} oder {{{#!vorlage Befehl nice -n -12 sudo nano }}} {{{#!vorlage 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: {{{#!vorlage Befehl renice niceness }}} ``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 [:sudo: Root-Rechten] kann am die Priorität sowohl im Bereich -20 bis 19 sowie für die Prozesse aller Benutzer ändern, siehe auch [#prio Prozesspriorität]. renice kennt die folgenden Optionen: {{{#!vorlage Tabelle <-2 rowclass="titel" :>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 [:Shell/pstree:pstree], [:Shell/ps:ps] oder [:Shell/pidof: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: {{{#!vorlage Befehl renice 15 -p 5678 }}} * Priorität aller derzeit laufenden Prozesse des Programms `nano` auf "-10" ändern: {{{#!vorlage Befehl sudo renice -10 `pidof nano` }}} * Priorität aller Prozesse des Benutzers `user` auf "10" ändern: {{{#!vorlage Befehl renice 10 -u user }}} * Priorität der Prozesse mit der PID 1234 und 5678 sowie für alle Prozesse von ``user`` auf "-10" ändern: {{{#!vorlage Befehl sudo renice -10 -p 1234 5678 -u user }}} * Priorität des [:XServer:XServers] auf "-10" ändern: {{{#!vorlage Befehl sudo renice -n -10 $(pgrep X) }}} = Links = * [https://www.gnu.org/software/coreutils/ GNU Core Utilities] {en} * [:Shell/Befehlsübersicht:] {Übersicht} Übersicht über verschiedene Shell-Befehle # tag: Shell, System, Prozesse, Prozesspriorität