Einführung

Einführung

Die Fähigkeit des Benutzers, bei der Ausführung einen Prioritätswert für seinen eigenen Prozess beizubringen. Sind Sie nett oder missbrauchen Sie einfach Systemressourcen ohne ersichtlichen Grund? In diesem Artikel lernen Sie, wie Sie Ihre Prozesse verwalten, um wie viel Verarbeitungsleistung sie zu sich nehmen und wie Sie einen Prioritätswert Ihrer Prozesse verwenden können Hübsch & Renice Linux -Befehl. Wir werden mit einer grundlegenden Theorie darüber beginnen, was Prozess, Prozessplanung, wie man einen neuen Prozess ausgibt, und dann wechseln wir zu Hübsch Befehl und erklären Sie, wie der Prozess Prioritätswert ändert.

Was ist Prozess

In einfachen Worten ist ein Prozess eine Namenskonvention, die von Linux verwendet wird, um die Rolle eines laufenden Programms zu übernehmen. Ein Prozess ist eine Sammlung von Regeln, nach denen ein bestimmtes Programm zugewiesene Prozessorzeit, Speicher und E/A -Ressourcen verwendet. Jeder Prozess, der auf einem Linux -System ausgeführt wird.

Linux -Kernel wurde entwickelt, um verschiedene Informationen zu jedem Prozess zu sammeln. Dazu gehören, aber nicht beschränkt auf:

  • Prozessstatus (Runnable, Schlafen, Zombie oder gestoppt)
  • Priorität der Prozessausführung (Schönheit)
  • Informationen zu gebrauchten Ressourcen
  • Besitzer des Prozesses
  • Welche Netzwerkports und Dateien haben jeden bestimmten Prozess geöffnet
  • und mehr…

Jetzt, da wir eine Vorstellung davon haben, wie der Prozess ist, können wir einen Prozess erstellen. Öffnen Sie dazu einfach Ihren Terminal und führen Sie den Befehl Ja im Hintergrund aus und leiten Sie seine Ausgabe an /dev /null um:

$ ja> /dev /null & [1] 5997 

Danach verwenden wir den Befehl ps -l, wir können die Informationen zu unserem Ja -Prozess nicht extrahieren:

$ ps -l f s uid pid ppid c pri ni addr sz wchan tty ty ty cmd 0 s 1000 5830 3283 0 80 0 - 6412 WAIT PTS/0 00:00:00 BASH 0 R 1000 5997 5830 99 80 0 - 1757 - PTS/PTS/PTS/PTS/PTS/ 0 00:00:09 Ja 0 R 1000 5998 5830 0 80 0 - 2399 - PTS/0 00:00:00 PS 

Ab dem obigen können wir bis zu den folgenden Informationen lesen:

  • F - Flagge: Der Vorgang begann nicht mit Superuser -Privilegien. Andernfalls würden wir Nummer 4 oder Summe von 1 und 4 sehen. Überprüfen Mann ps Für mehr Information.
  • S - Status: Der Prozess wird derzeit ausgeführt
  • Uid - Benutzer -ID des Benutzer, der den Prozess initiiert hat. UID ist tatsächlich ein Alias ​​für EUID (effektive Benutzer -ID)
  • PID - Prozess -ID unserer Ja Befehl ist 5997
  • Ppid - Übergeordnete Prozess -ID. Dies ist eine Prozess -ID, aus der unser Ja -Befehl ausgezogen wurde. In diesem Fall ist es mit PID 5830 verprügelt.
  • C - Ganzzahlwert der Prozessornutzung in % .
  • PRI - Prozesspriorität. Desto höherer Wert ist die niedrigere Priorität.
  • Ni - Schöner Wert mit Bereich von -20 bis 19. Je höher der Wert ist, desto schöner sind Sie für andere Benutzer mit anderen Worten, desto höherer Wert ist die niedrigere Priorität.

Prozessplanung

Dieser Abschnitt kann übersprungen werden, wenn Sie nicht mehr auf Details zu Prozesspriorität und Planung eingehen möchten. Hier werden wir versuchen, Linux -Prozess mit einer leicht verständlichen rudimentären Zusammenfassung zu beschreiben, da dieses Thema mehrere Seiten umfassen kann, und dies wäre die einzige Einführung.

Aus unserer Sicht müssen wir diese Linux verstehen (Linux -Kernelversion> = 2.6) Scheduler ist präventiv. Dies ist eine Fähigkeit, die es Kernel ermöglicht, sich präventiv dafür zu entscheiden. Darüber hinaus trennt Kernel die Prioritätslisten in Echtzeitaufgaben und Benutzeraufgaben, die von 1 - 100 bzw. 101 - 140 toben.

Darüber hinaus weist der Linux -Kernel höhere Prioritätsaufgaben längere Quantenzeit und niedrigere Prioritätsaufgaben zu, die die Quantenzeit kürzer sind. Dies beträgt ungefähr 200 ms bzw. 10 ms. Mit anderen Worten, jede Aufgabe darf nur ausgeführt werden, wenn sie noch eine verbleibende Zeitscheibe hat. Daher führt die kürzere Zeitscheibe, um auszuführen. Sobald die Vorgangszeitscheibe leer ist, wird der Prozess auf verschoben Abgelaufener Runqueue wo seine Priorität neu kalkuliert und dann wieder zu bewegt wird Active RunQueue. Diese Beziehung ist auf dem Diagramm zu Ihrer Rechten veranschaulicht. Es ist wichtig zu erwähnen, dass sowohl aktiv als auch abgelaufene RunQueues Listen von Aufgaben enthalten, die nach ihrer Priorität sortiert sind.

Prozesslebenszyklus

Das Grundprinzip des Linux -Prozessmanagements enthält zwei unterschiedliche Operationen bei der Erstellung eines neuen Prozesses. In der Operation kopiert sich der Prozess von selbst durch Gabel() Rufen Sie an und erstellen Sie so einen neuen Prozess mit einzigartiger PID. Der Gabelbetrieb folgt am häufigsten exec () Betrieb, der ein neues Programm ausführt. Der erste Prozess, der während der Startzeit erstellt wurde, ist drin welches immer pid 1 zugewiesen wird. Alle anderen Prozesse gelten als Kinderprozesse des Init -Prozesses. Unter normalen Umständen, bevor der Kinderprozess sterben wird, muss dieses Ereignis durch einen übergeordneten Prozess durch Senden des Ausstiegswerts anerkannt werden. Erfolgreiche Beendigung senden einen übergeordneten Prozesswert 0. Wenn aus irgendeinem Grund der Kinderprozess über den übergeordneten Prozess überlebt drin Akzeptiert diesen Prozess als verwaisten Prozess.

Verwenden Sie einen schönen Befehl

Da die Verarbeitungskraft im Laufe der Jahre exponentiell gewachsen ist und immer noch zunimmt, nimmt die Bedeutung eines schönen Befehls im gleichen Tempo ab. Daher sind Sie daher heute sehr gezwungen, die Priorität der Prozesse manuell zu ändern. Trotzdem ist diese Fähigkeit da und kann in einigen Situationen immer noch nützlich sein. Standardmäßig wird schön ein schönes Level auf 10 festlegen.

$ schön ja> /dev /null & [1] 5199 $ PS -l F S UID PID PPID C PRI Ni ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6445 WAIT PTS/0 00:00:00 BASH 0 R 1000 5199 3383 99 90 10 - 1757 - PTS/0 00:00:00 : 07 Ja 0 R 1000 5200 3383 0 80 0 - 2399 - PTS/0 00:00:00 PS 

Um den Prozess mit einem anderen netten Wert als 10 zu starten, können wir -n -Switch verwenden.

$ Schön -n 15 ja> /dev /null & Oder $ Schön -15 Ja> /dev /null & [1] 5270 $ PS -l F S UID PID PPID C PRI Ni ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6447 WAIT PTS/0 00:00:00 BASH 0 R 1000 5270 3383 99 95 15 - 1757 - PTS/0 00:00:00 : 02 Ja 0 R 1000 5271 3383 0 80 0 - 2399 - PTS/0 00:00:00 PS 

Um einen schönen Wert unter 0 Root -Berechtigungen festzulegen, sind erforderlich. Nizza wird das Programm immer noch starten. Der schöne Wert wird jedoch auf 0 gesetzt. Hier versuchen wir, ohne Stammberechtigungen einen guten Wert auf -1 zu setzen:

$ Schön -n -1 ja> /dev /null & [1] 5285 Schön: Nippe nicht setzen: Erlaubnis verweigert $ PS -l F S UID PID PPID C PRI Ni ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6447 WAIT PTS/0 00:00:00 BASH 0 R 1000 5285 3383 95 80 0 - 1757 - PTS/0 00:00 : 07 Ja 0 R 1000 5295 3383 0 80 0 - 2399 - PTS/0 00:00:00 PS 

Um einen guten Wert auf niedriger als 0 festzulegen.

# Schön -n -1 ja> /dev /null & [1] 5537 # PS -l F S UID PID PPID C PRI Ni ADDR SZ WCHAN TTY TIME CMD 4 S 0 5428 3383 0 80 0 - 14430 WAIT PTS/0 00:00:00 SU 0 S 0 5436 5428 1 80 0 - 7351 WAIT PTS/0 00:00 : 00 BASH 4 R 0 5537 5436 87 79 -1 - 1757 - PTS/0 00:00:04 Ja 4 R 0 5538 5436 0 80 0 - 2399 - PTS/0 00:00:00 PS 

Verwenden Sie den Befehl renice

Im vorherigen Abschnitt haben wir erfahren. Hier versuchen wir, den guten Wert eines laufenden Programms mit Renice Command zu ändern. Hier haben wir ein laufendes Ja -Programm mit einem guten Wert von 10:

$ PS -l F S UID PID PPID C PRI Ni ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6447 WAIT PTS/0 00:00:00 BASH 0 R 1000 5645 3383 99 90 10 - 1757 - PTS/0 00:00:00 : 04 Ja 0 R 1000 5646 3383 0 80 0 - 2399 - PTS/0 00:00:00 PS 

Um seinen Wert zu ändern, können wir Renice Command und Angabe von PID sowie einen guten Wert verwenden. Wechseln wir einen guten Wert auf 15:

$ Renice -n 15 -p 5645 5645 (Prozess -ID) Alte Priorität 10, neue Priorität 15 $ PS -l F S UID PID PPID C PRI Ni ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3383 3380 0 80 0 - 6447 WAIT PTS/0 00:00:00 BASH 0 R 1000 5645 3383 99 95 15 - 1757 - PTS/0 00:00:00 : 31 Ja 0 R 1000 5656 3383 0 80 0 - 2399 - PTS/0 00:00:00 PS 

Die zu befolgende Regel ist, dass Non-Super-Benutzer nur den guten Wert (weniger Priorität) für jeden Prozess erhöhen kann. Wenn würde jetzt versuchen, sich von 15 bis 10 auf einen guten Wert zu wechseln. Der folgende Fehler würde erscheint:

$ Renice -n 10 -p 5645 Renice: Die Priorität für 5645 (Prozess -ID) nicht festgelegt hat: Erlaubnis abgelehnt 

Der Befehl von Renice gibt einem Root -Benutzer auch die Möglichkeit, einen guten Wert der Prozesse eines Benutzers zu ändern. Dies geschieht mit -U -Schalter. Der folgende Linux -Befehl ändert eine Priorität aller Prozesse des Benutzers auf -19.

# Renice -n -19 -u Lubos 1000 (Benutzer -ID) Alte Priorität 0, neue Priorität -19 

Abschluss

Netter Befehl kann ein praktisches Werkzeug sein und ist sicherlich einfach zu bedienen. Bitte beachten Sie, dass Sie auch den Top -Befehl für Renice -Prozesswerte verwenden können.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
  • Verschachtelte Schleifen in Bash -Skripten
  • Dinge zu installieren auf Ubuntu 22.04
  • Installieren Sie Arch Linux in VMware Workstation
  • Ubuntu 20.04 Leitfaden
  • Wie man Kali Linux und Windows 10 Dual -Boot -Start hat
  • Mint 20: Besser als Ubuntu und Microsoft Windows?