Linux – Terminal, Jobsteuerung und Daemons
1. Die Konzepte von Prozessgruppe, Job und Sitzung
1. Prozessgruppe: Es handelt sich um eine Sammlung von einem oder mehreren Prozessen. Typischerweise können im Zusammenhang mit demselben Auftrag verschiedene Signale vom selben Terminal empfangen werden. Jeder Prozess verfügt über eine eindeutige Prozessgruppen-ID. Jede Prozessgruppe kann einen Leitprozess haben. Die Identität des Gruppenleiterprozesses besteht darin, dass seine Prozessgruppen-ID mit seiner Prozess-ID übereinstimmt. Der Gruppenleiterprozess kann eine Prozessgruppe erstellen, die Prozesse in der Gruppe erstellen und dann beenden. Solange es einen Prozess in einer Prozessgruppe gibt, existiert die Prozessgruppe, unabhängig davon, ob der Gruppenleiterprozess beendet wird.
2. Job: Shell ist in Front- und Backends unterteilt, um nicht den Prozess, sondern den Job (Job) oder die Prozessgruppe zu steuern. Ein Vordergrundjob kann aus mehreren Prozessen bestehen, und ein Hintergrundjob kann auch aus mehreren Prozessen bestehen. Die Shell kann einen Vordergrundjob und eine beliebige Anzahl von Hintergrundjobs ausführen, was als Jobsteuerung bezeichnet wird.
Der Unterschied zwischen einem Job und einer Prozessgruppe: Wenn ein Prozess im Job einen untergeordneten Prozess erstellt, gehört der untergeordnete Prozess nicht zum Job.
Sobald der Job beendet ist, rückt die Shell in den Vordergrund. Wenn der ursprüngliche Vordergrundprozess noch vorhanden ist (sofern der untergeordnete Prozess nicht beendet wurde), wird er automatisch zu einer Hintergrundprozessgruppe.
3. Sitzung: Es handelt sich um eine Sammlung einer oder mehrerer Prozessgruppen. Eine Sitzung kann ein steuerndes Terminal haben. Der Sitzungsanfangsprozess, der eine Verbindung mit dem steuernden Terminal herstellt, wird als Steuerungsprozess bezeichnet. Mehrere Prozessgruppen in einer Sitzung können in eine Vordergrundprozessgruppe und eine oder mehrere Hintergrundprozessgruppen unterteilt werden. Daher sollte eine Sitzung den Steuerungsprozess (den ersten Prozess der Sitzung), eine Vordergrundprozessgruppe und eine beliebige Hintergrundprozessgruppe umfassen.
******************** (Die Prozessgruppe entspricht einer Klasse und der Gruppenleiter entspricht dem Gruppenleiter. Das Gespräch entspricht einer Note. Jede Note verfügt über ein Büro für akademische Angelegenheiten (Kontrollterminal).
2. Terminal
1. Das Konzept des Terminals: Nachdem sich der Benutzer über das Terminal beim System angemeldet hat, erhält er einen Shell-Prozess. Dieses Terminal wird als Steuerungsterminal des Shell-Prozesses bezeichnet Der Prozess kann eine spezielle Gerätedatei übergeben /dev/tty greift auf sein steuerndes Terminal zu. Tatsächlich entspricht jedes Endgerät
einer anderen Gerätedatei. Ein Prozess kann über /dev/tty oder über die entsprechende Gerätedatei darauf zugreifen. Die Funktion ttyname kann den entsprechenden Dateinamen aus dem Dateideskriptor ermitteln. Der Dateideskriptor muss auf ein Endgerät und nicht auf eine beliebige Datei verweisen.
********************Überprüfen Sie die Gerätedateinamen, die den verschiedenen Terminals entsprechen.
1 #include<stdio.h> 2 #include<unistd.h> 3 int main() 4 { 5 printf("fd: %d -> %s\n",0,ttyname(0)); 6 printf("fd: %d -> %s\n",1,ttyname(1)); 7 printf("fd: %d -> %s\n",2,ttyname(2)); 8 }
2. Terminal-Anmeldevorgang:
Ein PC verfügt normalerweise nur über einen Satz Tastatur und Monitor, also nur einen Satz Endgeräte, auf den aber mit Strg-Alt-F1~ umgeschaltet werden kann Strg-Alt-F6 6-Zeichen-Terminals entsprechen 6 Sätzen virtueller Endgeräte. Sie teilen sich den gleichen Satz physischer Endgeräte. Die entsprechenden Gerätedateien sind /dev/tty1~/dev/tty6, daher werden sie virtuelle Terminals genannt. Die Gerätedatei /dev/tty0 repräsentiert das aktuelle virtuelle Terminal. Wenn Sie beispielsweise zum Zeichenterminal von Strg-Alt-F1 wechseln, stellt /dev/tty0 /dev/tty1 dar. F2, /dev/tty0 repräsentiert /dev/tty2, eine universelle Schnittstelle wie /dev/tty, kann jedoch nicht das Terminal darstellen, das dem grafischen Terminalfenster entspricht.
a. Beim Systemstart ermittelt der Init-Prozess anhand der Konfigurationsdatei /etc/inittab, welche Terminals geöffnet werden müssen.
b. getty öffnet das Endgerät als sein Steuerterminal gemäß den Befehlszeilenparametern, verweist die Dateideskriptoren 0, 1 und 2 auf das Steuerterminal
und fordert den Benutzer dann auf, ein Konto einzugeben. Nachdem der Benutzer das Konto eingegeben hat, ist die Aufgabe von getty abgeschlossen und das Anmeldeprogramm wird ausgeführt:
execle("/bin/login", "login", "-p", username, NULL, envp);
c. Das Anmeldeprogramm fordert den Benutzer zur Eingabe eines Passworts auf (schaltet das Echo des Terminals während der Passworteingabe aus) und überprüft dann die Richtigkeit des Kontopassworts. Wenn das Passwort falsch ist, wird der Anmeldevorgang abgebrochen und init führt einen erneuten Fork/Ausführung eines Getty-Prozesses durch. Wenn das Passwort korrekt ist, legt das Anmeldeprogramm einige Umgebungsvariablen fest, legt das aktuelle Arbeitsverzeichnis auf das Home-Verzeichnis des Benutzers fest und führt dann Shell aus:
execl("/bin/bash", "-bash", NULL);
drei, Daemon-Prozess
1. Der Daemon-Prozess, auch Daemon-Prozess genannt, ist ein spezieller Prozess, der im Hintergrund läuft. Es ist unabhängig vom Steuerterminal und führt regelmäßig eine Aufgabe aus oder wartet auf das Eintreten eines Ereignisses.
2. Verwenden Sie ps axj |. um den Daemon-Prozess anzuzeigen.
Parameter a bedeutet, dass nicht nur die Prozesse des aktuellen Benutzers aufgelistet werden, sondern auch die Prozesse aller anderen Benutzer bedeutet, dass nicht nur die Prozesse des Steuerterminals aufgelistet werden, sondern auch alle Prozesse ohne Steuerterminal.
3. Erstellen Sie einen Daemon-Prozess
Rufen Sie die Funktion „setsid“ auf, um eine neue Sitzung zu erstellen und zum Sitzungsleiter zu werden (der erste Prozess der Sitzung). Wenn der Aufruf erfolgreich ist, wird die neu erstellte Sitzungs-ID verwendet zurückgegeben werden. Wenn ein Fehler auftritt, wird -1 zurückgegeben ). Gründe:
1) Wenn der Daemon als einfacher Shell-Befehl gestartet wird, dann führt die Beendigung des übergeordneten Prozesses dazu, dass die Shell denkt, dass der Befehl ausgeführt wurde.
2) Stellen Sie sicher, dass der untergeordnete Prozess nicht der Führungsprozess einer Prozessgruppe ist.
c. Rufen Sie „setsid“ auf, um eine neue Sitzung zu erstellen. setsid bewirkt Folgendes:
1) Der aufrufende Prozess wird zum ersten Prozess der neuen Sitzung.
2) Der aufrufende Prozess wird zum Leiterprozess einer Prozessgruppe.
3) Der aufrufende Prozess verfügt über kein steuerndes Terminal. (Erneut forken, um sicherzustellen, dass der Daemon-Prozess das TTY-Gerät anschließend nicht öffnet)
d Ändern Sie das aktuelle Arbeitsverzeichnis in das Stammverzeichnis.
e. Schließen Sie Dateideskriptoren, die nicht mehr benötigt werden.
f. Andere: Ignorieren Sie das SIGCHLD-Signal.
Verwenden Sie ps axj |. und Den Inhalt des Daemon-Prozesses. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!
#include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 void mydeamon(void) 5 { 6 pid_t id=fork(); 7 umask(0);//将文件模式创建屏蔽字设置为0. 8 if(id>0) 9 { 10 exit(0);//调用fork,父进程退出(exit) 11 } 12 setsid();//调用setsid创建一个新会话 13 chdir("/");//将当前工作目录更改为根目录。 14 close(0);//关闭不在需要的文件描述符。 15 close(1); 16 close(2); 17 } 18 int main() 19 { 20 mydeamon(); 21 while(1); 22 return 0; 23 }

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Heutzutage ist es ein sehr häufiges Problem, dass Ubuntu seinen Benutzern nicht erlaubt, das Terminal zu öffnen. Wenn Sie ein ähnliches Problem erhalten und nicht wissen, was Sie als Nächstes tun sollen, erfahren Sie mehr über fünf Korrekturen zur Behebung des Problems „Ubuntu kann Terminal nicht öffnen“ auf Ihrem Linux-Gerät. Lassen Sie uns ohne weitere Umschweife auf die Ursachen und die dafür verfügbaren Lösungen eingehen. Warum kann Ubuntu das Terminal darauf nicht öffnen? Dies geschieht hauptsächlich, wenn Sie fehlerhafte Software installieren oder die Terminalkonfiguration ändern. Darüber hinaus können neue Anwendungen oder Spiele, die mit Gebietsschemas interagieren und diese beschädigen, ähnliche Probleme verursachen. Einige Benutzer meldeten eine Lösung für dieses Problem, als sie im Ubuntu-Aktivitätsmenü nach „Terminal“ suchten. Dies zeigt, dass

Das Win7-System verfügt über eine integrierte Kommunikationsfunktion namens Hyper Terminal, mit der Benutzer eine Verbindung zu anderen Computern herstellen können. Wie öffnet man also das Win7 Hyper Terminal? Sie öffnen zuerst die Systemsteuerung, suchen das Telefon und das Modem, legen dann die Standortinformationen fest, öffnen dann das Programm hypertrm.exe, geben den Namen auf der Popup-Seite ein. Wenn mehrere Verbindungen vorhanden sind, können Sie diese weiterhin hinzufügen Erstellen Sie eine neue und geben Sie schließlich die IP-Adresse ein, damit Sie eine Verbindung herstellen können. So öffnen Sie Win7 HyperTerminal: 1. Richten Sie es zunächst in der Systemsteuerung ein, Start→Systemsteuerung→Telefon und Modem 2. Standortinformationen öffnen→Land, Ortsvorwahl, Telefonnummer und andere zugehörige Informationen auswählen→OK 3. Zum Öffnen doppelklicken Wenn Sie das Programm hypertrm.exe verwenden, wird es eine Standardeinstellung geben

Mit der weit verbreiteten Anwendung des Linux-Betriebssystems müssen immer mehr Menschen die grundlegenden Befehle und Verknüpfungen im Linux-System erlernen und verstehen. In diesem Artikel stellen wir einige häufig verwendete Linux-Befehle und -Verknüpfungen vor, um Anfängern das Verständnis des Linux-Systems zu erleichtern und die Arbeitseffizienz zu verbessern. Häufig verwendete Befehle 1.1 ls-Befehl Der ls-Befehl ist einer der am häufigsten verwendeten Befehle unter Linux. Es wird hauptsächlich zum Auflisten von Dateien und Unterverzeichnissen im aktuellen Verzeichnis verwendet. Häufig verwendete Optionen sind: -l: Dateiinformationen im Langformat anzeigen, einschließlich Dateityp

So gehen Sie mit dem Problem verstümmelter Zeichen im Linux-Terminal um: Bei Verwendung des Linux-Systems wird der im Terminal angezeigte Text manchmal verstümmelt. Dies führt zu Unannehmlichkeiten bei der Verwendung des Terminals und muss rechtzeitig behoben werden. In diesem Artikel wird erläutert, wie mit einigen häufigen Problemen mit verstümmelten Linux-Terminals umgegangen werden kann, und es werden spezifische Codebeispiele bereitgestellt. Problem 1: Verstümmelte chinesische Zeichen auf dem Terminal. Verstümmelte chinesische Zeichen auf dem Terminal werden normalerweise durch falsche Zeichenkodierungseinstellungen auf dem Terminal verursacht. Wir können dieses Problem lösen, indem wir die Zeichenkodierungseinstellungen des Terminals ändern. #Sehen Sie sich das aktuelle Terminal an

Python ist eine sehr beliebte Programmiersprache, die vor allem in der Netzwerkprogrammierung weit verbreitet ist. Auch die serverseitige Programmierung gehört dazu. In der serverseitigen Programmierung sind Daemon-Prozesse ein gängiges Konzept. In diesem Artikel wird erläutert, wie Daemon-Prozesse in der Python-Serverprogrammierung implementiert werden. Was ist ein Daemon-Prozess? Wenn das serverseitige Programm ausgeführt wird, müssen wir es in einen Daemon-Prozess umwandeln, um den langfristigen stabilen Betrieb des Programms sicherzustellen. Ein Daemon ist ein Prozess, der kontinuierlich im Hintergrund läuft und keine Konsole oder Anmeldung belegt

Schritte zum Öffnen des Terminalfensters in vscode: 1. Öffnen Sie das Terminalfenster über die Menüleiste. 3. Öffnen Sie das Terminalfenster. Verwenden Sie das Terminalfenster.

Microsoft hat kürzlich Visual Studio Code 1.80 veröffentlicht. Obwohl dieses Update im Juli veröffentlicht wurde, wird es von den Beamten immer noch als Juni-Update bezeichnet. Nachdem Benutzer dieses Update installiert haben, kann das integrierte Terminal Bilder direkt anzeigen und auch Zusatzfunktionen wurden optimiert. In der zuvor veröffentlichten Vorschauversion von Visual Studio Code wurde die Unterstützung für Bilder im Terminal unterstützt und ist in der neuen Version 1.80 standardmäßig aktiviert. Um das Bild im Terminal anzeigen zu können, werden die Bildpixeldaten durch eine spezielle Escape-Sequenz in Text umgewandelt und schließlich auf das Terminal geschrieben. Wenn Sie typische PNG-, GIF- oder JPEG-Dateien an das Terminal weiterleiten möchten, müssen Sie das imgcatpython-Paket installieren und dann imgc im Terminal ausführen

Das Linux-Terminal befindet sich standardmäßig im Verzeichnis „/bin“. Die Methoden zum Öffnen des Linux-Terminals sind: 1. Verwenden Sie „Strg+Alt+T“, um das Terminal auf der Linux-Homepage zu öffnen Computer“-Funktion und geben Sie „ter“ ein. Öffnen Sie das Terminal und schließen Sie das Terminal dann mit „Strg+d“.
