Ich hatte keine Ahnung von Prozessen und Jobs, also habe ich einige Nachforschungen angestellt.
Ein Prozess ist ein Programm, das im Speicher ausgeführt wird.
Jeder Prozess erhält eine eindeutige ID, die als Prozess-ID bezeichnet wird und die eine ordnungsgemäße Verwaltung des Prozesses ermöglicht. Die Prozess-ID ändert sich erst, wenn der Prozess beendet ist.
Der Prozess hat einen Ausführungsbenutzer, der wie der Eigentümer der Datei festgelegt ist, und kann die Prozesse anderer Personen nicht ausführen.
Wenn ein neuer Prozess erstellt wird, wird aus dem vorhandenen Prozess ein anderer Prozess erstellt. Der ursprüngliche Prozess wird als übergeordneter Prozess und der erstellte Prozess als untergeordneter Prozess bezeichnet. Als konkretes Beispiel wird bei der Ausführung des Befehls ls der übergeordnete Prozess zur Shell und der untergeordnete Prozess zum Prozess des Befehls ls.
Unter Linux wird zusätzlich zu dem Prozess, der vom angemeldeten Benutzer ausgeführt wird, der Prozess der Verwaltung des Linux-Systems selbst von Anfang an ausgeführt. Viele davon werden mit Superuser-Berechtigungen ausgeführt
Ein Befehl, der den aktuell ausgeführten Prozess anzeigt. Bei Ausführung ohne Optionen werden nur die Prozesse angezeigt, die im aktuellen Terminal ausgeführt werden.
Ausführungsbeispiel
PID TTY TIME CMD
89124 ttys000 0:00.05 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server <=Iterm Prozess
89126 ttys000 0:00.32 -zsh <=zsh verwandt
88296 ttys001 0:01.40 /usr/local/bin/zsh -l <=zsh verwandt
Einführung in ein Beispiel für den Befehl ps
Alle vom aktuellen Benutzer ausgeführten Prozesse anzeigen
Fügen Sie die Option a zusätzlich zur Option x hinzu, um alle auf Ihrem System ausgeführten Prozesse anzuzeigen, nicht nur Ihre eigenen
Außerdem werden die CPU- und Speicherauslastungsraten usw. angezeigt.
Eine Kombination häufig verwendeter Maschinenoptionen beim Ausführen von ps-Befehlen
Zeigen Sie alle Prozesse des Benutzers an, der den Befehl ps ausgeführt hat, zusammen mit detaillierten Informationen Machen
Zeigen Sie alle Benutzerprozesse mit detaillierten Informationen an
Eine Verarbeitungseinheit, wenn sie von der Shell aus betrachtet wird, wird als Job bezeichnet (ein Prozess ist eine Verarbeitungseinheit, wenn er vom Kernel aus betrachtet wird). Eine in die Shell-Befehlszeile eingegebene Zeile wird zu einem Job
Ausführungsbeispiel
history | grep git
hisotry
und grep git
erstellthistory | grep git
Prozesse haben eine systemweit eindeutige Prozess-ID, Jobs haben jedoch eine Jobnummer für jede Shell. Mit anderen Worten, wenn Sie mehrere Terminals öffnen und mehrere Shells gleichzeitig verwenden, werden die Auftragsnummern dupliziert.
Befehl zum Anzeigen der aktuellen Jobliste
Ein Zustand, in dem die Verarbeitung ausgeführt wird, während der Benutzer interaktiv arbeitet
Befehl zum Ausführen eines Jobs im Vordergrund
Ein Zustand, in dem die Verarbeitung ausgeführt wird, ohne dass der Benutzer mit ihr interagiert.
Befehl, um die Verarbeitung in den Hintergrund zu stellen
Ein Zustand, in dem die Verarbeitung vorübergehend unterbrochen wird Ctrl + z Beenden Sie die Verarbeitung vorübergehend
Ein Befehl zum Beenden eines Prozesses oder Hintergrundjobs. Um genau zu sein, der Befehl "Signal senden". Ein Signal ist ein Signal, das an einen Prozess gesendet wird.
Es verhält sich je nach Signaltyp auf verschiedene Arten, z. B. "Ende", "Stopp" und "Neustart". Durch Senden eines Signals an einen laufenden Prozess ist es möglich, zwischen den Prozessen zu kommunizieren.
Die Art des vom Befehl kill gesendeten Signals kann durch kill- <Signalname>
angegeben werden. Wenn der Signalname weggelassen wird, wird das Signal TERM als Standardwert gesendet. Das heißt, die folgenden zwei Befehle haben dieselbe Bedeutung.
kill 100
kill =TERM 100
TERM bedeutet beenden.
Zusätzlich hat das Signal eine Signalnummer, und Optionen können durch die Signalnummer angegeben werden. Die Signalnummer von TERM ist 15, und kill -15 100
hat dieselbe Bedeutung wie der obige Befehl.
Sie können den Signaltyp mit kill -l
überprüfen
$ kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2
Strg + z sendet ein TSTP-Signal (Stopp) und Strg + c sendet ein INT-Signal (Ende) für einen Vordergrundjob.