Linux nice and renice Befehl (7 Beispiele)

Die Leistungsfähigkeit der Linux-Befehlszeile lässt sich daran ablesen, dass Sie die Planungspriorität von Prozessen mit Hilfe von Befehlszeilenwerkzeugen sogar leicht anpassen können. Ja, das ist möglich, und in diesem Tutorial werden wir darüber diskutieren, wie man das mit nice und renice macht.

Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele in diesem Artikel auf einem Ubuntu 22.04 System getestet wurden.

Linux nice and renice Befehle

Während Sie mit dem Befehl nice ein Programm/Prozess mit geänderter Planungspriorität ausführen können, können Sie mit dem Befehl renice die Planungspriorität eines bereits laufenden Prozesses ändern. Es folgt die generische Syntax für beide Befehle:

nice [OPTION] [COMMAND [ARG]...]
renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

Hier ist, was ihre jeweiligen Man Pages über sie zu sagen haben:

Nice: 
 Run COMMAND with an adjusted niceness, which affects process schedul?
 ing. With no COMMAND, print the current niceness. Niceness values
 range from -20 (most favorable to the process) to 19 (least favorable
 to the process).
Renice:
 Renice alters the scheduling priority of one or more running processes.
 The following who parameters are interpreted as process ID's, process
 group ID's, or user names. Renice'ing a process group causes all pro?
 cesses in the process group to have their scheduling priority altered.
 Renice'ing a user causes all processes owned by the user to have their
 scheduling priority altered. By default, the processes to be affected
 are specified by their process ID's.

Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine bessere Vorstellung davon vermitteln, wie diese Tools funktionieren.

Q1. Wie kann man die Qualität der laufenden Programme/Prozesse überprüfen?

Ja, man sollte zuerst wissen, wie man die vorhandene Planungspriorität überprüft, bevor man sie ändert. Wenn es um den Prozess geht, den Sie ausführen werden, dann sollten Sie wissen, dass die standardmäßige Planungspriorität immer 0 ist.

Zum Beispiel haben wir den folgenden Prozess ausgeführt:

./test-new

Und bestätigte die Priorität mit dem folgenden ps und grep Befehl:

ps -lu himanshu | grep test-new

Hier ist ‚himanshu‘ der Benutzer, der den ‚test new‘ Prozess besitzt. Nachfolgend wird die Ausgabe des obigen Befehls ausgegeben:

0 S  1000  6306  6125  0  80   0 -   508 hrtime pts/18   00:00:00 test-new

Der Wert in der 8. Spalte ist der schöne Wert, und wie du sehen kannst, ist er Null.

Q2. Wie schön funktioniert der Befehl?

Nun zum Punkt, wie funktioniert der nette Befehl? Es ist ganz einfach – verwenden Sie das Tool einfach wie folgt:

nice -PRIORITY COMMAND

Wenn ich zum Beispiel möchte, dass die Planungspriorität 10 ist, ist hier, wie ich das tun kann:

nice -10 ./test-new

Im Folgenden wird in diesem Fall der Befehl ps ausgegeben, um zu bestätigen, dass die Priorität auf 10 geändert wurde.

0 S  1000  6694  6125  0  90  10 -   508 hrtime pts/18   00:00:00 test-new

Q3. Wie macht man gute Arbeit mit negativen Werten?

Wie bereits eingangs erwähnt, liegen die Nettigkeitswerte zwischen -20 und 19, wobei erstere am günstigsten und letztere am wenigsten sind. Falls Sie dem Prozess einen negativen netten Wert zuordnen möchten, müssen Sie einen doppelten Bindestrich verwenden.

Zum Beispiel,

sudo nice --10 ./test-new

Bitte beachten Sie, dass Sie über root-Rechte verfügen müssen, um einem Prozess einen negativen netten Wert zuzuordnen. Und genau aus diesem Grund sollte dein ps-Befehl zur Bestätigung der neuen Nettigkeit ‚root‘ anstelle des anderen Benutzernamens enthalten.

$ ps -lu root | grep test-new

Hier ist die Ausgabe dieses Befehls, die in unserem Fall erzeugt wurde:

4 S 0 7054 7053 0 70 -10 - 508 - pts/18 00:00:00 test-new

Sie können also sehen, dass der Prozess jetzt mit einem schönen Wert von -10 läuft.

Q4. Wie kann man einen gesetzten ganzzahligen Wert zu niceness hinzufügen?

Sie können den nice value mit der Kommandozeilenoption -n anpassen, die der niceness einen gesetzten Integer-Wert hinzufügt. Standardmäßig ist dieser Einstellwert 10, obwohl Sie auch einen anderen Wert übergeben können.

-n, --adjustment=N

Zum Beispiel:

nice --adjustment=5 ./test-new

Und hier ist die Ausgabe, der in diesem Fall erzeugte Befehl ps:

0 S 1000 7314 6125 0 85 5 - 508 hrtime pts/18 00:00:00 test-new

So können Sie sehen, dass eine Priorität von 5 gesetzt wurde.

Q5. Wie kann man die Priorität der laufenden Prozesse ändern?

Während der Befehl nice beim Programmstart verwendet wird, können Sie mit dem Befehl renice die Priorität eines laufenden Prozesses ändern. Hier ist zum Beispiel, wie wir die Priorität des bereits laufenden „testneuen“ Prozesses von 5 auf 15 geändert haben.

renice -n 15 -p 7314

Das Argument -p steht für die Prozess-ID. Nachfolgend wird die Ausgabe des obigen Befehls ausgegeben:

7314 (process ID) old priority 5, new priority 15

Und der schöne Wert wurde tatsächlich auf 15 geändert.

Q6. Wie kann man die Priorität für alle Prozesse ändern, die zu einer Gruppe gehören?

Dazu können Sie die Option -g verwenden. Zum Beispiel:

renice -n 20 -g howtoforge

Der obige Befehl ändert die Priorität aller Prozesse, die zur Gruppe „howtoforge“ gehören.

Q7. Wie kann man die Priorität für alle Prozesse ändern, die zu einem Benutzer gehören?

Um die Priorität für alle einem Benutzer zugeordneten Programme zu ändern, verwenden Sie die Option -u. Zum Beispiel:

renice -n 5 -u himanshu

Fazit

Natürlich wird ein normaler Linux-Befehlszeilenbenutzer normalerweise nicht in Situationen kommen, in denen – in diesem Tool – benötigt wird, aber es ist immer gut, Kenntnisse über wichtige Befehlszeilen-Tools zu haben, und dazu gehören auch Nettigkeit und Renommee. Das Gute daran ist, dass die damit verbundene Lernkurve überhaupt nicht steil ist. Wir haben hier bereits die meisten Optionen diskutiert. Für weitere Informationen zu diesen Dienstprogrammen besuchen Sie bitte die Manualseiten – hier und hier.

Das könnte dich auch interessieren …