Alles, was Sie über Prozesse unter Linux wissen müssen [umfassende Anleitung]

Alles, was Sie über Prozesse unter Linux wissen müssen [umfassende Anleitung]

In diesem Artikel werden wir ein grundlegendes Verständnis von Prozessen durchlaufen und kurz untersuchen, wie Prozesse unter Linux mit bestimmten Befehlen verwaltet werden.

A Verfahren bezieht sich auf ein Programm in der Ausführung; Es ist eine laufende Instanz eines Programms. Es besteht aus der Programmanweisung, den Daten aus Dateien, anderen Programmen oder Eingaben eines Systembenutzers.

Arten von Prozessen

Grundsätzlich gibt es zwei Arten von Prozessen unter Linux:

  • Vordergrundprozesse (auch als interaktive Prozesse bezeichnet) - diese werden initialisiert und über eine Terminalsitzung kontrolliert. Mit anderen Worten, es muss einen Benutzer geben, der mit dem System verbunden ist, um solche Prozesse zu starten. Sie haben im Rahmen der Systemfunktionen/-dienste nicht automatisch begonnen.
  • Hintergrundprozesse (Auch als nicht interaktive/automatische Prozesse bezeichnet) - sind Prozesse, die nicht mit einem Terminal verbunden sind; Sie erwarten keine Benutzereingabe.

Was ist Dämonen

Dies sind spezielle Arten von Hintergrundprozessen, die beim Systemstart beginnen und für immer als Service ausgeführt werden. Sie sterben nicht. Sie werden als Systemaufgaben (als Dienste ausgeführt) spontan gestartet. Sie können jedoch von einem Benutzer über den Init -Prozess gesteuert werden.

Linux -Prozesszustand

Erstellung eines Prozesses unter Linux

Normalerweise wird ein neuer Prozess erstellt, wenn ein vorhandener Prozess eine genaue Kopie von sich selbst im Speicher erstellt. Der Kinderprozess hat die gleiche Umgebung wie seine Eltern, aber nur die Prozess -ID -Nummer ist unterschiedlich.

Es gibt zwei konventionelle Möglichkeiten, um einen neuen Prozess unter Linux zu erstellen:

  • Verwenden der Funktion System () - Diese Methode ist relativ einfach, ist jedoch ineffizient und weist erheblich bestimmte Sicherheitsrisiken auf.
  • Verwenden von fork () und exec () Funktion - Diese Technik ist etwas fortschrittlich, bietet aber eine größere Flexibilität und Geschwindigkeit zusammen mit Sicherheit.

Wie identifiziert Linux Prozesse?

Da Linux ein Multi-Benutzer-System ist, was bedeutet.

Und ein Programm wird durch seine Prozess -ID (identifiziertPID) ebenso wie es handeltPpid), daher können Prozesse weiter kategorisiert werden in:

  • Elternprozesse - Dies sind Prozesse, die während der Laufzeit andere Prozesse erstellen.
  • Kinderprozesse - Diese Prozesse werden von anderen Prozessen während der Laufzeit erstellt.

Der Init -Prozess

Drin Prozess ist die Mutter (Eltern) aller Prozesse auf dem System. Es ist das erste Programm, das ausgeführt wird, wenn sich das Linux -System startet. Es verwaltet alle anderen Prozesse auf dem System. Es wird vom Kernel selbst gestartet, so dass es im Prinzip keinen übergeordneten Prozess hat.

Der Init -Prozess hat immer eine Prozess -ID von 1. Es fungiert als Adoptivelternteil für alle verwaisten Prozesse.

Du kannst den ... benutzen PIDOF -Befehl Um die ID eines Prozesses zu finden:

# PIDOF SYSTEMD # PIDOF TOP # PIDOF HTTPD 
Finden Sie Linux -Prozess -ID

Ausführen:

$ echo $$ $ echo $ ppid 
Finden Sie Linux übergeordnete Prozess -Prozess -ID

Einen Prozess unter Linux starten

Sobald Sie einen Befehl oder ein Programm ausgeführt haben (z. B. CloudCMD - CloudCommander), startet er einen Prozess im System. Sie können einen Vordergrundprozess (interaktiv) wie folgt starten, er wird mit dem Terminal verbunden und ein Benutzer kann die Eingabe senden:

# CloudCMD 
Starten Sie den interaktiven Linux -Prozess

Linux -Hintergrundjobs

Verwenden Sie das, um einen Prozess im Hintergrund (nicht interaktiv) zu starten & Symbol, hier liest der Vorgang die Eingabe eines Benutzers erst dann, wenn er in den Vordergrund verschoben wird.

# CloudCMD & # Jobs 
Starten Sie den Linux -Prozess im Hintergrund

Sie können auch einen Vorgang an den Hintergrund senden, indem Sie ihn mithilfe von Verwendung einsetzen [Strg + z], Dies wird die senden Sigstop Signal auf den Prozess und stoppen so seine Operationen; Es wird untätig:

# tar -cf Backup.Teer /Backups /* #press Strg+z # Arbeitsplätze 

Verwenden Sie die über den oben ausgewählte Befehl im Hintergrund weiter ausführende Befehl BG Befehl:

# BG 

Verwenden Sie das, um einen Hintergrundprozess in den Vordergrund zu senden, die fg Befehl zusammen mit der Job -ID wie SO:

# Jobs # fg %1 
Linux -Hintergrundprozessjobs

Sie können auch mögen: So starten Sie den Befehl Linux im Hintergrund- und Abschlussprozess im Terminal

Zustände eines Prozesses unter Linux

Während der Ausführung ändert sich ein Prozess je nach Umgebung/Umständen von einem Staat zu einem anderen. In Linux hat ein Prozess die folgenden möglichen Zustände:

  • Betrieb - Hier wird entweder ausgeführt (es ist der aktuelle Prozess im System) oder es ist bereit zu laufen (es wartet darauf, einem der CPUs zugeordnet zu werden).
  • Warten - In diesem Zustand wartet ein Prozess auf ein Ereignis oder auf eine Systemressource. Darüber hinaus unterscheidet der Kernel auch zwischen zwei Arten von Warte Prozessen; Interruptible Warteverfahren - können durch Signale und ununterbrochene Warteverfahren unterbrochen werden - warten direkt auf Hardwarebedingungen und können nicht durch ein Ereignis/Signal unterbrochen werden.
  • Gestoppt - In diesem Zustand wurde ein Prozess gestoppt, normalerweise durch Erhalt eines Signals. Zum Beispiel ein Prozess, der debugged wird.
  • Zombie - Hier ist ein Prozess tot, er wurde gestoppt, aber er hat immer noch einen Eintrag in der Prozess Tabelle.

So sehen Sie aktive Prozesse unter Linux

Es gibt mehrere Linux -Tools zum Anzeigen/Auflistungsauflisten auf dem System

1. PS -Befehl

Es zeigt Informationen zu einer Auswahl der aktiven Prozesse auf dem System, wie unten gezeigt:

# PS # ps -e | Kopf 
Listen Sie Linux Active -Prozesse auf

2. Top - Systemüberwachungstool

TOP ist ein leistungsstarkes Tool, das Ihnen eine dynamische Echtzeitansicht eines laufenden Systems bietet, wie im folgenden Screenshot gezeigt:

# Spitze 
Listen Sie Linux -Auslaufprozesse auf

Lesen Sie dies für weitere Beispiele für Top -Nutzungen: 12 Top -Befehlsbeispiele unter Linux

3. Blicke - Systemüberwachungstool

Blicke ist ein relativ neues Systemüberwachungstool mit erweiterten Funktionen:

# Blicke 
Blicke - Linux -Prozessüberwachung

Für einen umfassenden Verwendungshandbuch lesen Sie: Blend - ein fortschrittliches Echtzeit -Systemüberwachungstool für Linux

Es gibt mehrere andere nützliche Linux -Systemüberwachungstools, mit denen Sie aktive Prozesse auflisten können. Öffnen Sie den folgenden Link, um mehr darüber zu erfahren:

  1. 20 Befehlszeilen -Tools zur Überwachung der Linux -Leistung
  2. 13 weitere nützliche Linux -Überwachungstools

Wie man Prozesse unter Linux steuert

Linux hat auch einige Befehle für die Kontrolle von Prozessen wie Kill, PKill, PGREP und Killall. Nachfolgend finden Sie einige grundlegende Beispiele für die Verwendung:

$ pGrep -u Tecmint Top $ Kill 2308 $ PGREP -U TECMINT TOP 
Steuerung von Linux -Prozessen steuern

Um zu erfahren, wie Sie diese Befehle ausführlich verwenden, um aktive Prozesse unter Linux abzutöten/zu beenden, öffnen Sie die folgenden Links:

  1. Eine Anleitung zum Töten, Pkill- und Killall -Befehlen zur Beendigung von Linux Processess
  2. So finden und töten Sie Laufprozesse unter Linux

Beachten Sie, dass Sie sie verwenden können, um nicht reagierende Anwendungen in Linux zu töten, wenn Ihr System gefriert.

Senden von Signalen an Prozesse senden

Die grundlegende Möglichkeit, Prozesse unter Linux zu kontrollieren, besteht darin, ihnen Signale zu senden. Es gibt mehrere Signale, die Sie an einen Prozess senden können, um alle Signale auszuführen:

$ Kill -l 
Listen Sie alle Linux -Signale auf

Um ein Signal an einen Prozess zu senden, verwenden Sie die Befehle Kill, PKill oder PGREP, die wir zuvor erwähnt haben. Programme können jedoch nur auf Signale reagieren, wenn sie programmiert sind, um diese Signale zu erkennen.

Und die meisten Signale dienen zum internen Gebrauch durch das System oder für Programmierer, wenn sie Code schreiben. Im Folgenden finden Sie Signale, die für einen Systembenutzer nützlich sind:

  • Seufzer 1 - an einen Prozess gesendet, wenn sein Steuerterminal geschlossen ist.
  • SIGINT 2 - gesendet an einen Prozess durch sein Steuerterminal, wenn ein Benutzer den Prozess durch Drücken unterbricht [Strg+C].
  • Sigquit 3 - An einen Prozess gesendet, wenn der Benutzer ein Kündigungssignal sendet [Strg+D].
  • Sigkill 9 - Dieses Signal endet sofort (Kills) und der Prozess führt keine Aufräumvorgänge durch.
  • Sigterm 15 - Dies ist ein Programmabschlusssignal (Kill wird dies standardmäßig senden).
  • SIGTSTP 20 - von seinem Kontrollanschluss an einen Prozess gesendet, um ihn zu beantragen (Terminal Stopp); vom Benutzer gedrückt initiiert [Strg+z].

Die folgenden Beispiele für Kill Commands, um die Firefox -Anwendung mit seiner PID zu töten, sobald sie gefriert:

$ PIDOF Firefox $ Kill 9 2687 oder $ Kill -Kill 2687 oder $ Kill -Sigkill 2687 

Um eine Anwendung mit ihrem Namen zu töten, verwenden Sie Pkill oder Killall wie SO:

$ pkill Firefox $ Killall Firefox 

Änderung der Linux -Prozesspriorität

Auf dem Linux -System haben alle aktiven Prozesse eine Priorität und einen bestimmten netten Wert. Prozesse mit höherer Priorität erhalten normalerweise mehr CPU -Zeit als mit niedrigeren Prioritätsprozessen.

Ein Systembenutzer mit Stammberechtigungen kann dies jedoch mit dem beeinflussen Hübsch Und Renice Befehle.

Aus der Ausgabe des oberen Befehls zeigt der NI den guten Wert an:

$ top 
Listen Sie Linux -Auslaufprozesse auf

Verwenden Sie das Hübsch Befehl, um einen guten Wert für einen Prozess festzulegen. Denken Sie daran, dass normale Benutzer einen guten Wert von null bis 20 auf Prozesse zuschreiben können, die sie besitzen.
Nur der Root -Benutzer kann negative nette Werte verwenden.

Zu Renice Die Priorität eines Prozesses verwenden Sie die Renice Befehl wie folgt:

$ renice +8 2687 $ renice +8 2103 

Schauen Sie sich unsere nützlichen Artikel zur Verwaltung und Steuerung von Linux -Prozessen an.

  1. Linux -Prozessverwaltung: Boot, Herunterfahren und alles dazwischen
  2. Finden Sie die 15 Top -15 -Prozesse nach Speicherverbrauch mit "Top" im Stapelmodus
  3. Finden Sie Top -Laufprozesse nach dem höchsten Speicher und der CPU -Verwendung unter Linux
  4. So finden Sie einen Prozessnamen mit der PID -Nummer unter Linux

Das ist alles fürs Erste! Haben Sie Fragen oder zusätzliche Ideen, teilen Sie sie mit uns über das Feedback -Formular unten mit.