Maison développement back-end tutoriel php Linux – Terminal, contrôle des tâches et démons

Linux – Terminal, contrôle des tâches et démons

Jan 18, 2017 am 10:24 AM

1. Les concepts de groupe de processus, de travail et de session
1. Groupe de processus : c'est un ensemble d'un ou plusieurs processus. Typiquement, associés à un même travail, différents signaux provenant du même terminal peuvent être reçus. Chaque processus possède un ID de groupe de processus unique. Chaque groupe de processus peut avoir un processus leader. L'identité du processus chef de groupe est que son ID de groupe de processus est égal à son ID de processus. Le processus chef de groupe peut créer un groupe de processus, créer les processus dans le groupe, puis y mettre fin. Tant qu'il existe un processus dans un groupe de processus, le groupe de processus existe, que le processus chef de groupe se termine ou non.

2. Job : Shell est divisé en front et backend pour contrôler non pas le processus mais le travail (job) ou le groupe de processus. Une tâche de premier plan peut être composée de plusieurs processus, et une tâche d'arrière-plan peut également être composée de plusieurs processus. Le shell peut exécuter une tâche de premier plan et un nombre illimité de tâches en arrière-plan, appelées contrôle des tâches.

La différence entre un travail et un groupe de processus : Si un processus dans le travail crée un processus enfant, le processus enfant n'appartient pas au travail.
Une fois le travail terminé, le Shell se mettra au premier plan. Si le processus de premier plan d'origine existe toujours (si le processus enfant n'a pas été terminé), il deviendra automatiquement un groupe de processus en arrière-plan.
3. Session : Il s'agit d'un ensemble d'un ou plusieurs groupes de processus. Une session peut avoir un terminal de contrôle. Le processus initial de session qui établit une connexion avec le terminal de contrôle est appelé processus de contrôle. Plusieurs groupes de processus dans une session peuvent être divisés en un groupe de processus de premier plan et un ou plusieurs groupes de processus d'arrière-plan. Par conséquent, une session doit inclure le processus de contrôle (le premier processus de la session), un groupe de processus de premier plan et tout groupe de processus d'arrière-plan.
****************** (Le groupe de processus équivaut à une classe, et le chef de groupe est équivalent au chef d'équipe. La conversation équivaut à une note. Chaque note dispose d'un Bureau des Affaires Académiques (terminal de contrôle)).
2. Terminal
1. Le concept de terminal : Une fois que l'utilisateur s'est connecté au système via le terminal, il obtient un processus Shell. Ce terminal est appelé le terminal de contrôle du processus Shell
Chacun. le processus peut transmettre un fichier de périphérique spécial /dev/tty pour accéder à son terminal de contrôle. En fait, chaque périphérique terminal
correspond à un fichier de périphérique différent. /dev/tty fournit une interface universelle. Un processus peut accéder à son terminal de contrôle via /dev/tty ou via le fichier de périphérique correspondant. La fonction ttyname peut trouver le nom de fichier correspondant à partir du descripteur de fichier. Le descripteur de fichier doit pointer vers un périphérique terminal et non vers n'importe quel fichier.
******************Vérifiez les noms de fichiers de périphériques correspondant aux différents terminaux.

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 }
Copier après la connexion

2. Processus de connexion au terminal :
Un PC n'a généralement qu'un seul ensemble de clavier et de moniteur, c'est-à-dire un seul ensemble d'équipements terminaux, mais il peut être activé par Ctrl-Alt-F1~ Ctrl-Alt-F6 Les terminaux à 6 caractères sont équivalents à 6 ensembles de terminaux virtuels. Ils partagent le même ensemble de terminaux physiques. Les fichiers de périphériques correspondants sont /dev/tty1~/dev/tty6, ils sont donc appelés terminaux virtuels. Le fichier de périphérique /dev/tty0 représente le terminal virtuel actuel. Par exemple, lors du passage au terminal caractère de Ctrl-Alt-F1, /dev/tty0 représente /dev/tty1 Lors du passage au terminal caractère de Ctrl-Alt-. F2, /dev/tty0 représente Représente /dev/tty2, qui est une interface universelle tout comme /dev/tty, mais elle ne peut pas représenter le terminal correspondant à la fenêtre du terminal graphique.
a. Lorsque le système démarre, le processus d'initialisation détermine quels terminaux doivent être ouverts en fonction du fichier de configuration /etc/inittab.
b. Getty ouvre le terminal comme terminal de contrôle en fonction des paramètres de ligne de commande, pointe les descripteurs de fichiers 0, 1 et 2 vers le terminal de contrôle
, puis invite l'utilisateur à saisir un compte. Une fois que l'utilisateur a accédé au compte, la tâche de getty est terminée et il exécute le programme de connexion :
execle("/bin/login", "login", "-p", username, NULL, envp);
c . Le programme de connexion invite l'utilisateur à saisir un mot de passe (désactive l'écho du terminal lors de la saisie du mot de passe), puis vérifie l'exactitude du mot de passe du compte. Si le mot de passe est incorrect, le processus de connexion est terminé et init relancera/exécutera un processus getty. Si le mot de passe est correct, le programme de connexion définit certaines variables d'environnement, définit le répertoire de travail actuel sur le répertoire personnel de l'utilisateur, puis exécute Shell:
execl("/bin/bash", "-bash", NULL);
Troisièmement, Processus démon
1 Le processus démon, également appelé processus démon, est un processus spécial exécuté en arrière-plan. Il est indépendant du terminal de contrôle et exécute périodiquement une tâche ou attend qu'un événement se produise.
2. Utilisez ps axj | grep -E 'd$' pour afficher le processus démon
Le paramètre a indique que non seulement les processus de l'utilisateur actuel sont répertoriés, mais également les processus de tous les autres utilisateurs, et le paramètre x indique que non seulement les processus du terminal de contrôle sont répertoriés. Processus répertorie également tous les processus sans terminaux de contrôle. Le paramètre j indique la liste des informations relatives au contrôle des tâches.
3. Créez un processus démon

Appelez la fonction setsid pour créer une nouvelle session et devenez le leader de la session (le premier processus de la session). Si l'appel réussit, l'identifiant de session nouvellement créé le sera. être renvoyé. Si une erreur se produit, -1 sera renvoyé ;

a. Appelez umask pour définir le mot du masque de création du mode fichier sur 0.
b. ). Raisons :
1) Si le démon est démarré en tant que simple commande shell, alors la fin du processus parent fait penser au shell que la commande a été exécutée.
2) Assurez-vous que le processus enfant n'est pas le processus leader d'un groupe de processus.
c. Appelez setsid pour créer une nouvelle session. setsid provoquera :
1) Le processus appelant devient le premier processus de la nouvelle session.
2) Le processus appelant devient le processus leader d'un groupe de processus.
3) Le processus appelant n'a pas de terminal de contrôle. (Fork à nouveau pour s'assurer que le processus démon n'ouvrira pas le périphérique tty par la suite)
d Remplacez le répertoire de travail actuel par le répertoire racine.
e. Fermez les descripteurs de fichiers qui ne sont plus nécessaires.
f.Autres : ignorez le signal SIGCHLD.

#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 }
Copier après la connexion

Utilisez ps axj | grep "nom de fichier" pour afficher le processus démon qui vient d'être créé

Linux – Terminal, contrôle des tâches et démons

Ce qui précède est Linux - terminal, contrôle des tâches , et Le contenu du processus démon, veuillez faire attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si le terminal Ubuntu ne peut pas être ouvert ? Comment résoudre le problème selon lequel Ubuntu ne peut pas ouvrir le terminal ? Que dois-je faire si le terminal Ubuntu ne peut pas être ouvert ? Comment résoudre le problème selon lequel Ubuntu ne peut pas ouvrir le terminal ? Feb 29, 2024 pm 05:30 PM

C'est un problème très courant de nos jours qu'Ubuntu ne permet pas à ses utilisateurs d'ouvrir le terminal. Si vous rencontrez un problème similaire et ne savez pas quoi faire ensuite, découvrez cinq correctifs permettant de résoudre ce problème « Ubuntu ne peut pas ouvrir le terminal » sur votre appareil Linux. Sans plus tarder, examinons ses causes et les solutions disponibles. Pourquoi Ubuntu ne peut-il pas ouvrir le terminal ? Cela se produit principalement lorsque vous installez un logiciel défectueux ou modifiez la configuration du terminal. En plus de cela, les nouvelles applications ou jeux qui interagissent avec les paramètres régionaux et les corrompent peuvent provoquer des problèmes similaires. Certains utilisateurs ont signalé un correctif pour ce problème lors de la recherche de Terminal dans le menu d'activité d'Ubuntu. Cela montre que

Comment ouvrir l'hyperterminal Win7 Comment ouvrir l'hyperterminal Win7 Jul 14, 2023 pm 12:17 PM

Le système win7 dispose d'une fonction de communication intégrée appelée Hyper Terminal, et les utilisateurs peuvent utiliser cette fonction pour se connecter à d'autres ordinateurs. Alors comment ouvrir l'Hyper Terminal win7 ? Vous ouvrez d'abord le panneau de configuration, recherchez le téléphone et le modem, puis définissez les informations de localisation, puis ouvrez le programme hypertrm.exe, entrez le nom dans la page contextuelle, s'il existe plusieurs connexions, vous pouvez continuer à les ajouter en en créant un nouveau, et enfin entrez L'adresse IP vous permettra de vous connecter. Comment ouvrir Win7 HyperTerminal : 1. Définissez-le d'abord dans le panneau de configuration, Démarrer → Panneau de configuration → Téléphone et modem 2. Ouvrez les informations de localisation → Sélectionnez le pays, l'indicatif régional, le téléphone et d'autres informations connexes → OK 3. Double-cliquez pour ouvrir programme hypertrm.exe, il y aura un défaut

Commandes et raccourcis courants dans les systèmes Linux Commandes et raccourcis courants dans les systèmes Linux Jun 18, 2023 am 08:46 AM

Avec l'application généralisée du système d'exploitation Linux, de plus en plus de personnes commencent à avoir besoin d'apprendre et de comprendre les commandes et raccourcis de base du système Linux. Dans cet article, nous présenterons quelques commandes et raccourcis Linux couramment utilisés pour aider les débutants à comprendre le système Linux et à améliorer l'efficacité du travail. Commandes couramment utilisées Commande 1.1ls La commande ls est l'une des commandes les plus couramment utilisées sous Linux. Il est principalement utilisé pour lister les fichiers et sous-répertoires du répertoire courant. Les options couramment utilisées sont : -l : affiche les informations sur le fichier au format long, y compris le type de fichier.

Comment gérer les caractères tronqués dans les terminaux Linux Comment gérer les caractères tronqués dans les terminaux Linux Mar 20, 2024 pm 03:12 PM

Comment résoudre le problème des caractères tronqués dans le terminal Linux. Lors de l'utilisation du système Linux, le texte affiché dans le terminal sera parfois tronqué. Cela nous gêne lors de l'utilisation du terminal et doit être traité à temps. Cet article explique comment résoudre certains problèmes courants de terminal Linux tronqué et fournit des exemples de code spécifiques. Problème 1 : caractères chinois tronqués sur le terminal. Les caractères chinois tronqués sur le terminal sont généralement causés par des paramètres de codage de caractères incorrects sur le terminal. Nous pouvons résoudre ce problème en modifiant les paramètres de codage des caractères du terminal. #Voir le terminal actuel

Programmation serveur Python : comment les démons sont implémentés Programmation serveur Python : comment les démons sont implémentés Jun 18, 2023 pm 08:04 PM

Python est un langage de programmation très populaire, particulièrement largement utilisé dans la programmation réseau. La programmation côté serveur en fait également partie. Dans la programmation côté serveur, les processus démons sont un concept courant. Cet article explique comment implémenter des processus démons dans la programmation serveur Python. Qu'est-ce qu'un processus démon ? Lorsque le programme côté serveur est en cours d'exécution, afin de garantir le fonctionnement stable à long terme du programme, nous devons le convertir en processus démon. Un démon est un processus qui s'exécute en permanence en arrière-plan et n'occupe pas de console ni de connexion.

Comment ouvrir la fenêtre du terminal dans vscode Comment ouvrir la fenêtre du terminal dans vscode Mar 25, 2024 pm 03:48 PM

Étapes pour ouvrir la fenêtre du terminal dans vscode : 1. Ouvrez la fenêtre du terminal via les touches de raccourci ; 2. Ouvrez la fenêtre du terminal via la barre de menu ; 3. Ouvrez la fenêtre du terminal via le panneau de commande ; Utilisez la fenêtre du terminal.

Microsoft met à jour Visual Studio Code 1.80 Microsoft met à jour Visual Studio Code 1.80 Jul 10, 2023 pm 08:13 PM

Microsoft a récemment lancé Visual Studio Code 1.80. Bien que cette mise à jour ait été publiée en juillet, le responsable l'appelle toujours la mise à jour de juin. Une fois que les utilisateurs ont installé cette mise à jour, le terminal intégré peut afficher directement les images et les fonctions auxiliaires ont également été optimisées. Dans la version d'aperçu précédemment publiée de Visual Studio Code, la prise en charge des images dans le terminal a été prise en charge et elle est activée par défaut dans la nouvelle version 1.80. Afin de pouvoir afficher l'image dans le terminal, les données des pixels de l'image sont converties en texte via une séquence d'échappement spéciale et finalement écrites dans le terminal. Si vous souhaitez transférer des fichiers PNG, GIF ou JPEG typiques vers le terminal, vous devez installer le package imgcatpython, puis exécuter imgc dans le terminal.

Où est le terminal Linux ? Où est le terminal Linux ? Mar 24, 2023 am 10:29 AM

Le terminal Linux se trouve par défaut dans le répertoire « /bin ». Les méthodes pour ouvrir le terminal Linux sont les suivantes : 1. Utilisez « Ctrl+alt+T » pour ouvrir le terminal sur la page d'accueil de Linux. 2. Recherchez dans « Recherchez votre ; ordinateur" et saisissez "ter "Ouvrez le terminal puis fermez le terminal avec "Ctrl+d".

See all articles