Jedem laufenden Prozess in Unix ist eine Priorität zugeordnet.
Sie können die Prozesspriorität mit den Dienstprogrammen nice und renice ändern. Der Nice-Befehl startet einen Prozess mit einer benutzerdefinierten Planungspriorität. Der Renice-Befehl ändert die Scheduling-Priorität eines laufenden Prozesses.
Der Linux-Kernel plant den Prozess und weist jedem von ihnen entsprechend CPU-Zeit zu. Wenn jedoch einer Ihrer Prozesse eine höhere Priorität benötigt, um mehr CPU-Zeit zu erhalten, können Sie den Befehl nice und renice verwenden, wie in diesem Tutorial erklärt.
Der Prioritätsbereich der Prozessplanung liegt zwischen -20 und 19. We Nennen Sie dies einen netten Wert.
Ein netter Wert von -20 stellt die höchste Priorität dar, und ein netter Wert von 19 die niedrigste Priorität für einen Prozess.
Wenn ein Prozess gestartet wird, erhält er standardmäßig die Standardpriorität 0.
1. Anzeige des netten Werts eines Prozesses
Die aktuelle Priorität eines Prozesses kann mit dem Befehl ps angezeigt werden.
Die Spalte „NI“ in der Ausgabe des ps-Befehls zeigt den aktuellen netten Wert (d. h. die Priorität) eines Prozesses an.
Wir werden ein Testprogramm namens test.pl starten, das verwendet wird, um den Befehl nice and renice zu demonstrieren. Dieses Testprogramm erledigt bestimmte Aufgaben und läuft eine Weile.
$ perl test.pl
Wenn Sie den ps-Befehl wie unten gezeigt ausführen, können Sie feststellen, dass dieses test.pl-Programm den netten Standardwert 0 hat (sehen Sie sich die NI-Spalte in der folgenden Ausgabe an).
$ ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 6884 6424 99 80 0 - 1556 - 13:45 pts/3 00:05:54 perl test.pl
2. Starten Sie ein Programm mit geringerer Priorität
Anstatt das Programm mit der Standardpriorität zu starten, können Sie den netten Befehl verwenden, um den Prozess mit einer bestimmten Priorität zu starten.
In diesem Beispiel wird test.pl mit einem netten Wert von 10 gestartet.
$ nice -10 perl test.pl
Hinweis: Denken Sie daran, dass -10 im obigen Befehl die Priorität eines Prozesses auf 10 setzt. Der Befehl – in nice steht für den Bindestrich, den wir verwenden, um Optionen an den Befehl zu übergeben.
Um also den netten Wert 5 zu übergeben, sagen Sie -5. Um einen netten Wert von 6 zu übergeben, sagen Sie -6.
Wie Sie unten sehen, wird dieses Programm jetzt mit einem netten Wert von 10 gestartet, was bedeutet, dass es im Vergleich zu anderen Programmen, die standardmäßig gestartet werden, mit einer niedrigeren Priorität ausgeführt wird.
$ ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 7044 6424 99 90 10 - 1556 - 13:58 pts/3 00:00:03 perl test.pl
3. Starten Sie ein Programm mit hoher Priorität
Sie können auch ein Programm mit höherer Priorität starten. Ein negativer Nice-Wert erhöht die Priorität des Prozesses. Daher muss der Wert mit einem — (zwei Bindestriche) vor dem netten Befehl angegeben werden, wie unten gezeigt.
# nice --10 perl test.pl
Um also den netten Wert von -5 zu übergeben, fügen Sie zwei Bindestriche vor 5 ein. Um den netten Wert von -6 zu übergeben, fügen Sie zwei Bindestriche vor der 6 hinzu.
Wie Sie unten sehen, wird dieses Programm jetzt mit einem netten Wert von -10 gestartet, was bedeutet, dass es im Vergleich zu anderen Programmen, die standardmäßig gestartet werden, mit einer höheren Priorität ausgeführt wird.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
Hinweis:Normale Benutzer dürfen kein Programm mit höherer Priorität starten. Nur der Root-Benutzer darf ein Programm mit hoher Priorität starten.
Wenn Sie als normaler Benutzer die Priorität erhöhen, erhalten Sie die folgende Fehlermeldung von nice command.
$ nice --10 perl test.pl nice: cannot set niceness: Permission denied
Beachten Sie, dass das Programm nach dem Drucken der obigen Fehlermeldung weiterhin mit der Standardpriorität (d. h.:0) ausgeführt wird.
4. Ändern Sie die Priorität mit der Option -n
Die Prozesspriorität kann mit Hilfe der Option -n angepasst werden.
Priorität erhöhen:
# nice -n -5 perl test.pl
Verringern Sie die Priorität:
# nice -n 5 perl test.pl
5. Ändern Sie die Priorität eines laufenden Prozesses
Die Priorität eines bereits laufenden Prozesses kann mit dem Befehl renice geändert werden.
In diesem Beispiel läuft das Programm test.pl bereits mit einem netten Wert von -10.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
Wir können den Nice-Wert des obigen Programms wie unten gezeigt auf -19 ändern. Übergeben Sie die Prozess-ID des obigen Programms an die Option -p.
# renice -n -19 -p 3534
Stellen Sie sicher, dass der Nice-Wert auf -19 geändert wurde.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -19 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
6. Ändern Sie die Priorität aller Prozesse, die zu einer Gruppe gehören
Mit der Option -g können Sie die Priorität aller Prozesse ändern, die zu einer Gruppe gehören. Der folgende Befehl ändert den netten Wert aller Prozesse, die zu geekstuff gehören, auf 5.
# renice -n 5 -g geekstuff
7. Ändern Sie die Priorität aller Prozesse im Besitz des Benutzers
Renice ermöglicht es, die Priorität aller Prozesse zu ändern, die einem bestimmten Benutzer gehören, wie unten gezeigt.
# renice -n 5 -u bala
Der obige Befehl ändert die Priorität aller Prozesse, die dem Benutzer bala gehören. Es wird allen Prozessen, die dem Benutzer bala gehören, einen netten Wert von 5 zuweisen.
# ps -fl -C "perl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 2720 2607 99 85 5 - 1556 - 14:34 pts/2 00:05:07 perl test.pl 0 R bala 2795 2661 99 85 5 - 1556 - 14:39 pts/3 00:00:09 perl 2.pl