8 Prozesse

Auf einem Computer ausgeführte Programme und Befehle werden als Prozesse bezeichnet.

Es gibt Eltern- und Kindprozesse. Ein Prozess, der von einem Programm oder Befehl gestartet wird, ist ein Elternprozess. Ein Kindprozess ist das Produkt eines Elternprozesses. Ein Elternprozess kann mehrere Kindprozesse haben. Ein Kindprozess kann jedoch nur einen einzigen Elternprozess haben.

Jedem Prozess wird vom System beim Starten eine Prozessidentifikationsnummer (Prozess-ID) zugeordnet. Wird dasselbe Programm mehrmals gestartet, erhält es jedes Mal eine andere Prozess-ID.

Jeder Prozess, der auf einem System gestartet wird, nutzt einen Teil der verfügbaren Systemressourcen. Werden mehrere Prozesse gleichzeitig ausgeführt, teilt ein im Betriebssystem integrierter Scheduler jedem Prozess auf der Basis festgelegter Prioritäten einen Anteil an Rechenzeit zu. Diese Prioritäten können mit den Befehlen nice und renice geändert werden.

Anmerkung : Zum Zuweisen einer höheren Prozesspriorität müssen Sie Rootberechtigung besitzen. Alle Benutzer können mit dem Befehl nice einem Prozess, den sie starten, und mit dem Befehl renice einem Prozess, den sie bereits gestartet haben, eine niedrigere Priorität zuweisen. In der folgenden Liste sind die verschiedenen Prozesstypen beschrieben:

8.1 Vordergrund- und Hintergrundprozesse

Prozesse, die von einem Benutzer gestartet werden oder mit dem Benutzer interagieren müssen, werden als Vordergrundprozesse bezeichnet. Prozesse, die ohne Benutzerintervention ausgeführt werden, bezeichnet man als Hintergrundprozesse. Programme und Befehle werden standardmäßig als Vordergrundprozesse ausgeführt. Wenn Sie einen Prozess im Hintergrund ausführen möchten, geben Sie am Ende des Befehls, mit dem der Prozess gestartet wird, ein Et-Zeichen (&) ein.

8.2 Dämonprozesse

Dämonprozesse sind unabhängige Prozesse, auf die der Benutzer keinen Einfluss hat. Sie werden ständig im Hintergrund ausgeführt und sind jederzeit verfügbar. Dämonprozesse werden normalerweise beim Starten des Systems gestartet und so lange ausgeführt, bis das System ausgeschaltet wird. Sie werden in der Regel zur Ausführung von Systemservices verwendet und stehen jederzeit mehreren Tasks und Benutzern zur Verfügung. Dämonprozesse werden von Root oder von der Root-Shell gestartet und können nur von Root wieder beendet werden. Beispielsweise wird vom Prozess qdaemon der Zugriff auf Systemressourcen, wie z. B. Drucker, hergestellt. Ein weiterer allgemeiner Dämonprozess ist der Dämonprozess sendmail.

8.3 Geisterprozesse

Bei einem Geisterprozess (oder Zombie-Prozess) handelt es sich um einen inaktiven Prozess, der in der Prozesstabelle zwar noch geführt wird (d. h., ihm ist immer noch eine Prozess-ID zugeordnet), dem aber kein Systemspeicherbereich mehr zugeordnet ist. Geisterprozesse sind beendete Prozesse, die in der Prozesstabelle so lange weiter existieren, bis der zugehörige Elternprozess beendet oder ein Systemabschluss durchgeführt und das System erneut gestartet wird. Geisterprozesse haben den Status , wenn sie mit dem Befehl ps aufgelistet werden.

8.4 Befehl zum Überprüfen des Prozessstatus (Befehl ps)

Während des Systembetriebs werden auch Prozesse ausgeführt. Mit dem Befehl ps können Sie ermitteln, welche Prozesse aktiv sind, und Informationen zu diesen Prozessen anzeigen.

Der Befehl ps besitzt mehrere Flags, mit denen angegeben werden kann, welche Prozesse aufgelistet und welche Informationen zu den einzelnen Prozessen angezeigt werden sollen.

Geben Sie Folgendes ein, um alle auf dem System ausgeführten Prozesse anzuzeigen:

ps -ef

Das System zeigt Informationen ähnlich den folgenden an:

USER   PID  PPID   C    STIME    TTY  TIME CMD
root     1     0   0   Jun 28      -  3:23 /etc/init 
root  1588  6963   0   Jun 28      -  0:02 /usr/etc/biod 6 
root  2280     1   0   Jun 28      -  1:39 /etc/syncd 60 
mary  2413 16998   2 07:57:30      -  0:05 aixterm 
mary 11632 16998   0 07:57:31  lft/1  0:01 xbiff 
mary 16260  2413   1 07:57:35  pts/1  0:00 /bin/ksh 
mary 16469     1   0 07:57:12  lft/1  0:00 ksh /usr/lpp/X11/bin/xinit 
mary 19402 16260  20 09:37:21  pts/1  0:00 ps -ef 

Die Spalten in der vorherigen Ausgabe sind wie folgt definiert:

Eintrag Beschreibung

USER          Anmeldename des Benutzers
PID       Prozess-ID
PPID          Prozess-ID des Elternprozesses
C         CPU (Auslastung durch den Prozess)
STIME         Startzeit des Prozesses
TTY       Workstationsteuerung für den Prozess
TIME          Gesamte Ausführungszeit für den Prozess
CMD       Befehl

Die Prozess-ID für den Befehl ps -ef im vorherigen Beispiel ist 19402. Die Prozess-ID des Elternprozesses (Befehl /bin/ksh) ist 16260.

Falls die Liste sehr umfangreich ist, verschiebt sich der obere Teil unter Umständen aus dem Sichtbereich. Wenn Sie die Liste seitenweise anzeigen möchten, müssen Sie den Befehl ps durch ein Pipe-Symbol mit dem Befehl pg verketten. Geben Sie an der Eingabeaufforderung Folgendes ein:

ps -ef | pg

Geben Sie Folgendes an der Eingabeaufforderung ein, um Statusinformationen zu allen auf dem System ausgeführten Prozessen anzuzeigen:

ps gv

Mit diesem Befehl wird eine Reihe von Statistiken für jeden aktiven Prozess aufgelistet. Die Ausgabe des Befehls sieht in etwa wie folgt aus:

PID       TTY     STAT  TIME PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND
0         - A     0:44    7     8     8    xx     0     0  0.0  0.0 swapper
1         - A     1:29  518   244   140    xx    21    24  0.1  1.0 /etc/init
771       - A     1:22    0    16    16    xx     0     0  0.0  0.0 kproc
1028      - A     0:00   10    16     8    xx     0     0  0.0  0.0 kproc
1503      - A     0:33  127    16     8    xx     0     0  0.0  0.0 kproc
1679      - A     1:03  282   192    12 32768   130     0  0.7  0.0 pcidossvr
2089      - A     0:22  918    72    28    xx     1     4  0.0  0.0 /etc/sync
2784      - A     0:00    9    16     8    xx     0     0  0.0  0.0 kproc
2816      - A     5:59 6436  2664   616     8   852   156  0.4  4.0 /usr/lpp/
3115      - A     0:27  955   264   128    xx    39    36  0.0  1.0 /usr/lib/
3451      - A     0:00    0    16     8    xx     0     0  0.0  0.0 kproc
3812      - A     0:00   21   128    12 32768    34     0  0.0  0.0 usr/lib/lpd/
3970      - A     0:00    0    16     8    xx     0     0  0.0  0.0 kproc
4267      - A     0:01  169   132    72 32768    16    16  0.0  0.0 /etc/sysl
4514  lft/0 A     0:00   60   200    72    xx    39    60  0.0  0.0 /etc/gett
4776  pts/3 A     0:02  250   108   280     8   303   268  0.0  2.0 -ksh 
5050      - A     0:09 1200   424   132 32768   243    56  0.0  1.0 /usr/sbin
5322      - A     0:27 1299   156   192    xx    24    24  0.0  1.0 /etc/cron
5590      - A     0:00    2   100    12 32768    11     0  0.0  0.0 /etc/writ
5749      - A     0:00    0   208    12    xx    13     0  0.0  0.0 /usr/lpp/
6111      - T     0:00   66   108    12 32768    47     0  0.0  0.0 /usr/lpp/

Einfache Prozess-Auswahl

-A              wählt alle Prozesse aus, identisch mit -e
-N oder 
--deselect      wählt alle Prozesse aus, die die angegebenen Bedingungen nicht erfüllen (negiert die Auswahl)
T               wählt alle Prozesse die mit dem aktuellen Terminal verbunden sind aus. Identisch der t Option, ohne jedes Argument
-a              wählt alle Prozesse, außer den Session-Leitern und Prozessen, die nicht mit einem Terminal verbunden sind, aus
a               hebt die BSD-Stil "nur du selbst" Beschränkung auf, die durch die Verwendung von BSD-Optionen auf die Auswahl der Prozesse angewendet wird. Diese Option listet also alle Prozesse eines Terminals
-d              wählt alle Prozesse außer Session-Leitern aus
-e              wählt alle Prozesse aus, identisch mit -A
r               beschränkt die Auswahl auf laufende Prozesse
-C PROZESSLISTE     zeigt nur die Prozesse an, die in PROZESSLISTE aufgeführt sind.
x               hebt die BSD-Stil "muss ein tty haben" Beschränkung auf, die durch die Verwendung von BSD-Optionen angewendet wird Diese Option listet also alle Prozesse, die dem aufrufenden Benutzer gehören

8.5 Sonstige Optionen

-f          erzeugt eine detailliertere Ausgabe
-F          erzeugt eine noch detailliertere Ausgabe

8.6 Beispiele

Vollständige Prozessliste

Alle Prozesse unter Verwendung der Standard-Syntax anzeigen lassen:

ps -e 

Das gleiche unter Verwendung der BSD-Syntax:

ps ax 

Will man erweiterte Informationen erhalten, so erreicht man das mit

ps -eF 

bzw.

ps aux 

Prozessliste filtern

Oftmals werden Befehle der Form

ps aux | grep einprogramm 

empfohlen, um herauszufinden ob einprogramm läuft. Diese Syntax sollte man jedoch vermeiden, da sich hierbei grep einprogramm selbst findet. Die korrekte Alternative lautet

ps -fC einprogramm 

Man kann auch mittels

ps -fC einprogramm,nocheinprogramm,undnocheins 

gleichzeitig nach mehreren Prozessen suchen.

Prozessbaum

Einen Prozessbaum anzeigen:

ps -ejH 

(oder mit BSD-Syntax):

ps axjf 

Grafisch schöner ist die Ausgabe, wenn pstree verwendet wird.

8.7 Prozess als Datei

In Linux werden Informationen über alle laufenden Prozesse im Verzeichnis /proc gespeichert. Dieses Verzeichnis enthält virtuelle Dateien, die als Schnittstelle dienen, um auf Prozessinformationen zuzugreifen. Jeder Prozess hat ein eigenes Unterverzeichnis innerhalb von /proc, das nach seiner Prozesskennung (PID) benannt ist.

Diese “Dateien” im /proc-Verzeichnis repräsentieren die Prozesse und enthalten Informationen wie PID, Status, Ressourcennutzung, Befehlszeilenargumente und vieles mehr. Durch das Lesen und Schreiben in diese virtuellen Dateien können Benutzeranwendungen und Systemdienste Informationen über Prozesse abrufen oder ändern.

Durch die Verwendung von /proc als Speicherort für Prozessinformationen wird eine einheitliche Schnittstelle geschaffen, die es ermöglicht, auf Prozesse zuzugreifen, unabhängig davon, ob sie Benutzeranwendungen oder Systemdienste sind. Dies erleichtert die Überwachung, Steuerung und Kommunikation zwischen den laufenden Prozessen und dem System.

8.8 Prozesshierarchie

Die Prozesshierarchie bezieht sich auf die organisierte Struktur von Prozessen in einem Betriebssystem. In einem typischen Betriebssystem, wie z.B. Unix oder Windows, werden Programme als Prozesse ausgeführt.

Diese Prozesse können wiederum andere Prozesse starten, was zu einer Hierarchie von Prozessen führt. Die übergeordneten Prozesse werden als Elternprozesse bezeichnet, während die von ihnen gestarteten Prozesse als Kindprozesse bezeichnet werden. Diese Hierarchie ermöglicht es, komplexe Aufgaben in kleinere, leichter zu verwaltende Teile zu unterteilen und die Ressourcennutzung effizient zu organisieren.

Die Elternprozesse können die Aktivitäten und Ressourcen der Kindprozesse überwachen und steuern, und wenn ein Elternprozess beendet wird, werden in der Regel auch seine Kindprozesse beendet. Die Prozesshierarchie ist ein grundlegendes Konzept in der Betriebssystemarchitektur und spielt eine wichtige Rolle bei der Verwaltung und Organisation von Prozessesen.

8.9 Prozess Status

Was bedeutet der Prozess-Status?

Der Status eines Prozesses sagt aus, ob dieser derzeit aktiv ist oder nicht. Es gibt vier Status, die ein Prozess haben kann:

Die Mehrheit der Prozesse läuft entweder oder schläft.

8.10 Prozesskontrolle

8.10.1 Defintion

Der Begriff Prozesskontrolle umfasst folgende Kernelemente:

In Linux stehen uns hierfür verschiedene Mechanismen (bzw. Befehle) zur Verfügung.

8.10.2 Befehle zur Prozesskontrolle

8.11 Prozesse im Hintegrund

In Linux können Prozesse im Hintergrund ausgeführt werden, was bedeutet, dass sie ohne direkte Interaktion des Benutzers laufen.

Der Befehl nohup steht für “no hang up” und wird verwendet, um einen Prozess so zu starten, dass er auch dann weiterläuft, wenn die Verbindung zum Terminal unterbrochen wird oder das Terminal geschlossen wird.

Beispiel:

nohup ./mein_programm &

  1. Strg + Z und bg: Man kann einen laufenden Prozess unterbrechen, indem man Strg + Z drückst, und dann den Prozess mit dem Befehl bg im Hintergrund fortsetzen.

    Beispiel:

    
    [Strg + Z]
    
    bg
    

Das Ausführen von Prozessen im Hintergrund ist nützlich, wenn man das Terminal für andere Aufgaben nutzen möchte, während ein Programm im Hintergrund läuft, oder wenn man sicherstellen möchte, dass ein Programm auch nach dem Schließen des Terminals weiterläuft.

8.12 Prozess im Vordergrund

Um einen Prozess vom Hintergrund in den Vordergrund zu holen, kann man den Befehl fg (Foreground) verwenden.

  1. Aktive Hintergrundjobs anzeigen: Zuerst sollte man alle aktiven Hintergrundjobs anzeigen lassen. Man kann dies tun, indem man den Befehl jobs eingibst.

  2. Hintergrundjob in den Vordergrund holen: Job auswählen, den man in den Vordergrund bringen möchte, und der Verwendung von der Job-ID mit dem Befehl fg.

    Beispiel:

    Beispiel: ```bash jobs fg %1

Hier ist %1 die Job-ID des Hintergrundjobs. Man kann auch den Namen des Jobs verwenden, wenn man ihn kennt.

Durch diesen Befehl wird der ausgewählte Job in den Vordergrund geholt, und man kann direkt mit ihm interagieren.

# Programm starten "mein_programm" im Hintergrund mit nohup
nohup ./mein_programm &

# Bestätigungsnachricht, dass das Programm gestartet wurde
[1] 1234

# Überprüfung der aktiven Hintergrundjobs
jobs

# Ergebnis der jobs-Befehlsausgabe
[1]+  Running                 nohup ./mein_programm &

# Unterbrecheung des Prozesses und verschiebung in den Hintergrund mit Strg + Z
^Z
[1]+  Stopped                 nohup ./mein_programm

# Überprüfung der aktiven Hintergrundjobs
jobs

# Ergebnis der jobs-Befehlsausgabe
[1]+  Stopped                 nohup ./mein_programm

# Hintergrundjob in den Vordergrund mit bg holen
bg

# Bestätigungsnachricht, dass der Prozess wieder im Hintergrund läuft
[1]+ nohup ./mein_programm &

# Hintergrundjob wieder in den Vordergrund mit fg holen
fg

# Bestätigungsnachricht, dass der Prozess wieder im Vordergrund ist
./mein_programm

8.13 /proc/pid/status

Die Datei /proc/pid/status ist eine virtuelle Datei im Linux-Betriebssystem, die Informationen über den Status eines bestimmten Prozesses mit der Prozesskennung (PID) pid enthält. Diese Informationen sind nützlich, um den aktuellen Zustand, die Ressourcennutzung und andere Details eines laufenden Prozesses zu überwachen.

Hier sind einige Beispiele dafür, was man in der Datei /proc/pid/status finden kann:

8.13.1 Name des Prozesses

Der Name des Prozesses wird unter der Zeile “Name:” aufgelistet. Zum Beispiel: Name: bash

8.13.2 Prozessstatus

Der Status des Prozesses wird unter der Zeile “State:” angezeigt. Zum Beispiel: State: S (sleeping)

8.13.3 Gruppenzugehörigkeit

Die Gruppenzugehörigkeit des Prozesses wird unter “Gid:” aufgeführt. Zum Beispiel: Gid: 1000 1000 1000 1000

8.13.4 Benutzer-ID:

Die Benutzer-ID des Prozesses wird unter “Uid:” aufgeführt. Zum Beispiel: Uid: 1000 1000 1000 1000

8.13.5 Speicherinformationen

Informationen zum Speicherverbrauch des Prozesses sind unter “VmSize” und “VmRSS” aufgeführt. Zum Beispiel: VmSize: 1840 kB VmRSS: 316 kB

8.13.6 Priorität des Prozesses

Die Priorität des Prozesses wird unter “Priority:” aufgelistet. Zum Beispiel: Priority: 20

Hier sind weitere Details zur /proc/pid/status-Datei und was sie enthält:

8.13.7 PID und PPID

Die Prozesskennung (PID) und die Kennung des Elternprozesses (PPID) geben die Identifikation des Prozesses und seines Elternprozesses an. Zum Beispiel: PID: 1234 PPID: 5678

8.13.8 Speicherinformationen

Neben “VmSize” und “VmRSS” enthält die Datei auch Informationen über den virtuellen Speicher des Prozesses, wie beispielsweise “VmPeak” (maximal belegter virtueller Speicher), “VmSwap” (belegter Swap-Speicher) und andere. Diese Informationen helfen dabei, den Speicherverbrauch des Prozesses zu überwachen.

8.13.9 CPU-Auslastung

Informationen zur CPU-Auslastung des Prozesses sind ebenfalls verfügbar, einschließlich der CPU-Zeit, die der Prozess verwendet hat.

8.13.10 Berechtigungen und Zugriff

Die Berechtigungen und Zugriffsrechte des Prozesses werden in der Datei aufgelistet, einschließlich der Benutzer- und Gruppen-ID des Prozesses sowie der Berechtigungen für Lesen, Schreiben und Ausführen.

8.13.11 Signalinformationen

Informationen über die Signale, die der Prozess empfangen hat oder auf die er wartet, sind ebenfalls enthalten. Dies umfasst Signale wie SIGINT (Interrupt), SIGTERM (Beenden) und andere.

8.13.12 Thread-Informationen

Falls der Prozess aus mehreren Threads besteht, werden Informationen zu den Threads und deren Zustand ebenfalls in der Datei aufgeführt.

8.13.13 Dateipositionen

Die Datei /proc/pid/status enthält auch Informationen über die aktuelle Dateiposition für den Prozess, was insbesondere für Prozesse relevant ist, die Dateien lesen oder schreiben.

8.14 Der Befehl “Top”

Der Befehl “top” in Linux wird verwendet, um eine dynamische Übersicht über die Prozesse auf einem System anzuzeigen. Es zeigt Informationen wie CPU-Auslastung, Speicherverbrauch und laufende Prozesse in Echtzeit an. “top” aktualisiert sich automatisch in regelmäßigen Abständen und ermöglicht es Benutzern, Prozesse zu überwachen und Engpässe im System zu identifizieren.

Die einzelnen Prozesse, die vom Befehl “top” angezeigt werden, enthalten verschiedene Informationen, darunter: 1. PID (Prozess-ID): Eine eindeutige Nummer, die jedem Prozess zugewiesen wird. 2. Benutzer: Der Benutzer, unter dem der Prozess läuft. 3. PR (Priorität): Die Priorität des Prozesses. 4. NI (Nice-Wert): Der “Nice”-Wert des Prozesses, der seine Priorität relativ zur Standardpriorität anpasst. 5. VIRT (Virtueller Speicher): Die Größe des virtuellen Speichers, den der Prozess belegt. 6. RES (Residenter Speicher): Die Größe des physikalischen Speichers, den der Prozess tatsächlich verwendet. 7. SHR (Gemeinsamer Speicher): Die Größe des gemeinsam genutzten Speichers des Prozesses. 8. S (Status): Der Status des Prozesses (z.B. “R” für laufend, “S” für schlafend). 9. %CPU: Die Prozessorauslastung, die der Prozess verursacht. 10. %MEM: Der Speicherverbrauch des Prozesses in Bezug auf den gesamten verfügbaren Speicher. 11. Zeit (TIME+): Die CPU-Zeit, die der Prozess bisher verwendet hat. 12. Befehl: Der Name des Programms oder des Befehls, der den Prozess gestartet hat.

Diese Informationen ermöglichen es Benutzern, die Leistung des Systems zu überwachen und Ressourcenauslastung zu identifizieren.

8.15 kill Befehl

Der Befehl kill in Linux wird verwendet, um Prozesse zu beenden. Es ist ein wichtiges Werkzeug für die Prozessverwaltung auf einem Linux-System. Hier sind einige wichtige Punkte über den Befehl:

  1. Syntax: Die grundlegende Syntax des Befehls lautet:

     kill [Optionen] PID
  2. PID (Prozess-ID): PID ist die eindeutige Kennung für einen Prozess. Sie können die PID eines Prozesses mit Befehlen wie ps (Prozessstatus) oder pgrep (Prozess suchen) herausfinden.

  3. Optionen: kill sendet Signale an den Zielprozess. Das Standard-Signal ist SIGTERM. Sie können jedoch verschiedene Signale senden, um unterschiedliche Verhaltensweisen des Prozesses zu erzielen. Einige häufig verwendete Optionen des Befehls kill sind:

Optionen Beschreibung
-TERM oder -15 Sendet ein SIGTERM-Signal, was dazu führt, dass der Prozess sanft beendet wird. Bei default wird kill ohne signalnummer ist wie kill -15 ausgeführt
-KILL oder -9 Sendet ein SIGKILL-Signal, was dazu führt, dass der Prozess sofort beendet wird, ohne die Möglichkeit für eine ordnungsgemäße Beendigung.
-HUP oder -1 Sendet ein SIGHUP-Signal, um einem Prozess anzuzeigen, dass er sich neu initialisieren oder neu starten soll. Historisch gesehen wurde es oft verwendet, um Prozessen mitzuteilen, dass sie sich neu verbinden sollen, z. B. nachdem ein Terminal geschlossen wurde. Einige Dienste und Prozesse reagieren auf SIGHUP, indem sie ihre Konfiguration neu laden oder sich neu starten.
-INT oder -2 Sendet ein SIGINT-Signal, um einem Prozess anzuzeigen, dass er unterbrochen werden soll. Dies ist das Signal, das normalerweise an einen Prozess gesendet wird, wenn Sie Ctrl + C in einem Terminal verwenden, um einen laufenden Prozess zu beenden. Die meisten Programme reagieren auf SIGINT, indem sie sich ordnungsgemäß beenden.
-STOP oder -19 Sendet ein SIGSTOP-Signal um einen Prozess anzuhalten, ohne ihn zu beenden. Dies ist das Signal, das normalerweise an einen Prozess gesendet wird, wenn Sie Ctrl + z in einem Terminal verwenden. So wird er in seinem aktuellen Zustand angehalten und hält die Ausführung an, bis ein anderes Signal empfangen wird, das ihn fortsetzt.
-CONT oder -18 Sendet ein SIGCONT-Signal, um einen zuvor angehaltenen Prozess fortzusetzen, der mit SIGSTOP oder einem ähnlichen Signal angehalten wurde. Wenn ein Prozess mit SIGSTOP angehalten wurde, können Sie SIGCONT senden, um ihn wieder in Ausführung zu versetzen, wodurch er seinen vorherigen Zustand fortsetzt.
-q Diese Option sendet das Signal in die Warteschlange des Prozesses, anstatt es sofort auszuführen. Dies kann in Situationen nützlich sein, in denen ein Prozess gerade blockiert ist und das Signal später empfangen soll, wenn er wieder betriebsbereit ist.
-p Diese Option können Sie eine Datei angeben, die die PID des zu beendenden Prozesses enthält. Dies ist nützlich, wenn Sie die PID in einer Datei speichern und dann kill verwenden möchten, um den Prozess zu beenden.
-a Diese Option bewirkt, dass kill das Signal an alle Prozesse sendet, die mit Ihrem Benutzerkontext verbunden sind. Dies sollte mit äußerster Vorsicht verwendet werden, da es dazu führen kann, dass alle laufenden Prozesse beendet werden, was das System abstürzen lassen könnte.
-s Sendet ein SIGNAL-signal Diese Option ermöglicht es Ihnen, ein bestimmtes Signal anzugeben, das an den Zielprozess gesendet werden soll. Zum Beispiel:
kill -s SIGUSR1 PID

Dieser Befehl sendet das Signal SIGUSR1 an den Prozess mit der angegebenen PID. 

Die oben genannten Optionen bieten zusätzliche Flexibilität beim Einsatz des kill Befehls in Linux und ermöglichen eine präzisere Steuerung der Prozessbeendigung.

  1. Berechtigungen:

    Um den Befehl kill auf Prozesse anzuwenden, benötigen Sie in der Regel die entsprechenden Berechtigungen. Sie können Prozesse beenden, die Ihrem Benutzerkontext gehören, oder mit ausreichenden Berechtigungen Prozesse anderer Benutzer beenden.

  2. Prozesseignung:

    Sie sollten den Befehl kill mit Vorsicht verwenden, insbesondere wenn Sie Prozesse beenden, die für das System oder andere Benutzer kritisch sind. Ein unsachgemäßer Gebrauch kann zu Datenverlust oder Systeminstabilität führen.

8.15.1 Unterschiede zwischen pkill & killall

Die Befehle pkill und killall haben beide den Zweck, Prozesse auf einem Linux-System zu beenden, aber es gibt einige wichtige Unterschiede zwischen ihnen:

  1. Ziel der Prozessbeendigung:

  2. Verwendung von regulären Ausdrücken:

  3. Unterstützung von Benutzerkontexten:

  4. Plattformabhängigkeit:

Insgesamt bieten pkill und killall ähnliche Funktionen, aber pkill ist flexibler und leistungsfähiger, da es reguläre Ausdrücke und Benutzerkontexte unterstützt. Die Wahl zwischen den beiden hängt von den spezifischen Anforderungen und Vorlieben des Benutzers ab.