Gestion des processus de la série RHCSA dans Rhel 7 Boot, Shutdown et tout le reste - partie 5
- 5022
- 1300
- Zoe Dupuis
Nous commencerons cet article avec une révision globale et brève de ce qui se passe depuis le moment où vous appuyez sur le Pouvoir bouton pour allumer votre Rhel 7 serveur jusqu'à ce que vous soyez présenté avec l'écran de connexion dans une interface de ligne de commande.
Processus de démarrage LinuxVeuillez noter que:
1. Les mêmes principes de base s'appliquent, avec peut-être des modifications mineures, à d'autres distributions Linux également, et
2. La description suivante n'est pas destinée à représenter une explication exhaustive du processus de démarrage, mais seulement les fondamentaux.
Processus de démarrage Linux
1. Le POSTE (Alimentation sur l'auto-test) Initialise et effectue des vérifications matérielles.
2. Quand le POSTE finitions, le contrôle du système est passé au chargeur de démarrage de première étape, qui est stocké sur le secteur de démarrage de l'un des disques durs (pour les systèmes plus anciens en utilisant le BIOS et le MBR), soit une partition EFI dédiée (U).
3. Le chargeur de démarrage en première étape charge ensuite le chargeur de démarrage de deuxième étape, le plus généralement VER (Grand chargeur de démarrage unifié), qui réside à l'intérieur /botte, qui à son tour charge le noyau et le système de fichiers initial basé sur RAM (également connu initramfs, qui contient des programmes et des fichiers binaires qui effectuent les actions nécessaires pour finalement monter le système de fichiers racine réel).
4. Nous sommes présentés avec un écran d'éclaboussures qui nous permet de choisir un système d'exploitation et un noyau pour démarrer:
Écran de menu de démarrage5. Le noyau configure le matériel attaché au système et une fois le système de fichiers racine monté, lance le processus avec Pid 1, qui à son tour initialisera d'autres processus et nous présentera une invite de connexion.
Note: Que si nous le souhaitons plus tard, nous pouvons examiner les spécificités de ce processus à l'aide de la commande DMESG et filtrer sa sortie en utilisant les outils que nous avons expliqués dans les articles précédents de cette série.
Écran de connexion et processus de processusDans l'exemple ci-dessus, nous avons utilisé le bien connu commande ps Pour afficher une liste des processus actuels dont le processus parent (ou en d'autres termes, le processus qui les a commencé) est systemd (Le système de système et de services auxquels la plupart des distributions Linux ont basculé) pendant le démarrage du système:
# ps -o ppid, pid, uname, comm --ppid = 1
Rappelez-vous que le -o drapeau (court pour -format) vous permet de présenter la sortie de ps dans un format personnalisé pour répondre à vos besoins en utilisant les mots clés spécifiés dans le Spécificateurs de format standard sectionner homme PS.
Un autre cas dans lequel vous voudrez définir la sortie de ps Au lieu d'aller avec la valeur par défaut, c'est quand vous devez trouver des processus qui provoquent un CPU et / ou une charge de mémoire significatif, et de les trier en conséquence:
# PS AUX --SORT = + PCPU # SORT BY% CPU (ascendant) # PS AUX --SORT = -PCPU # SOR ) # PS AUX --SORT = -PMEM # SORT BY% MEM (DESCENDING) # PS AUX --SORT = + PCPU, -PMEM # COMBINE SORT BY% CPU (ascendant) et% MEM (DESCENDING)Personnaliser la sortie de la commande PS
Une introduction à Systemd
Peu de décisions dans le monde Linux ont provoqué plus de controverses que l'adoption de systemd par les principales distributions Linux. Le nom des défenseurs de Systemd comme ses principaux avantages les faits suivants:
Lisez également: L'histoire derrière «init» et «systemd»
1. Systemd permet de faire plus de traitement en parallèle pendant le démarrage du système (par opposition à l'ancien Sysvinit, qui a toujours tendance à être plus lent car il commence les processus un par un, vérifie si l'un dépend d'une autre, puis attend que les démons se lancent pour que plus de services puissent démarrer), et
2. Il fonctionne comme une gestion dynamique des ressources dans un système en cours d'exécution. Ainsi, les services sont démarrés en cas de besoin (pour éviter de consommer des ressources système si elles ne sont pas utilisées) au lieu d'être lancées sans raison valable pendant le démarrage.
3. Compatibilité en arrière avec Sysvinit scripts.
Systemd est contrôlé par le systemctl utilitaire. Si vous venez d'un Sysvinit Contexte, il y a de fortes chances que vous sachiez:
- le service outil, qui - dans ces systèmes plus anciens - a été utilisé pour gérer les scripts sysvinit, et
- L'utilitaire CHKConfig, qui a servi à mettre à jour et à interroger les informations de couture pour les services système.
- fermer, que vous devez avoir utilisé plusieurs fois pour redémarrer ou arrêter un système de course.
Le tableau suivant montre les similitudes entre l'utilisation de ces outils hérités et systemctl:
Outil hérité | SystemCTL équivalent | Description |
Nom du service Démarrer | Nom de début SystemCTL | Nom de démarrage (où le nom est un service) |
Arrêt du nom du service | Nom d'arrêt SystemCTL | Nom d'arrêt |
Nom du service CondRestart | Nom de rediffusion Systemctl Try-Restart | Redémarrer le nom (s'il fonctionne déjà) |
Nom du service Redémarrer | Nom de redémarrage de SystemCTL | Redémarrer le nom |
Nom du service Recharger | Nom de rechargement SystemCTL | Recharger la configuration du nom |
État du nom du service | Nom d'état SystemCTL | Affiche l'état actuel du nom |
service -status-all | systemctl | Affiche l'état de tous les services actuels |
Nom de chkconfig sur | SystemCTL Activer le nom | Activer le nom d'exécuter au démarrage comme spécifié dans le fichier unitaire (le fichier auquel le lien symbolique pointe). Le processus d'activation ou de désactivation d'un service pour démarrer automatiquement sur le démarrage consiste à ajouter ou supprimer des liens symboliques dans le répertoire / etc / systemd / système. |
nom de chkconfig off | Systemctl Désactiver le nom | Désactive le nom à s'exécuter au démarrage comme spécifié dans le fichier unitaire (le fichier auquel le lien symbolique pointe) |
Chkconfig -List Nom | Nom compatible SystemCTL | Vérifiez si le nom (un service spécifique) est actuellement activé |
Chkconfig -List | Systemctl -ype = service | Affiche tous les services et indique s'ils sont activés ou désactivés |
Arrêt -H maintenant | Systemctl Poweroff | Élevage de la machine (arrêt) |
Arrêt -R maintenant | SystemCTL Reboot | Redémarrez le système |
Systemd a également introduit les concepts d'unités (qui peuvent être un service, un point de montage, un appareil ou une prise de réseau) et des cibles (c'est ainsi que SystemD parvient à démarrer plusieurs processus connexes en même temps, et peut être considéré - bien que pas égal - comme l'équivalent des niveaux ambulants en Basé sur Sysvinit systèmes.
Résumer
Les autres tâches liées à la gestion des processus comprennent, mais peuvent ne pas être limitées à la possibilité de:
1. Ajustez la priorité d'exécution en ce qui concerne l'utilisation des ressources système concernant un processus:
Ceci est accompli à travers le Renice Utilité, qui modifie la priorité de planification d'un ou plusieurs processus en cours d'exécution. En termes simples, la priorité de planification est une fonctionnalité qui permet le noyau (présent dans les versions => 2.6) pour allouer des ressources système conformément à la priorité d'exécution attribuée (alias la gentillesse, dans une plage de -20 à travers 19) d'un processus donné.
La syntaxe de base de Renice est comme suit:
# Renice [-n] Priority [-gpu] identifiant
Dans la commande générique ci-dessus, le premier argument est la valeur prioritaire à utiliser, tandis que l'autre argument peut être interprété comme un processus Identifiant (qui est le paramètre par défaut), les ID de groupe de processus, les ID utilisateur ou les noms d'utilisateur. Un utilisateur normal (autre que la racine) ne peut que modifier la priorité de planification d'un processus qu'il possède, et n'augmenter que le niveau de gentillesse (ce qui signifie prendre moins de ressources système).
Priorité de planification des processus2. Tuer (ou interrompre l'exécution normale) d'un processus au besoin:
En termes plus précis, tuer un processus permet de lui envoyer un signal pour terminer son exécution gracieusement (Sigter = 15) ou immédiatement (Sigkill = 9) à travers les commandes Kill ou Pkill.
La différence entre ces deux outils est que le premier est utilisé pour terminer un processus spécifique ou un groupe de processus complètement, tandis que le second vous permet de faire la même chose en fonction du nom et d'autres attributs.
En outre, pkill vient groupé avec pgrep, qui vous montre les Pids qui seront affectés si pkill être utilisé. Par exemple, avant de courir:
# pkill -u gacanepa
Il peut être utile de voir en un coup d'œil qui sont le Pides appartenant à gacanepa:
# Pgrep -L -U GacanepaTrouver des pides d'utilisateur
Par défaut, les deux tuer et pkill envoyer le Sigterm signal au processus. Comme nous l'avons mentionné ci-dessus, ce signal peut être ignoré (tandis que le processus termine son exécution ou pour de bon), donc lorsque vous devez sérieusement arrêter un processus de course avec une raison valable, vous devrez spécifier le Sigkill Signal sur la ligne de commande:
# kill -9 identifiant # tuer un processus ou un groupe de processus # Identifiant de signal Kill -s # IDEM # PKILL -S Identifiant de signal # Kill un processus par nom ou d'autres attributs
Conclusion
Dans cet article, nous avons expliqué les bases du processus de démarrage dans un Rhel 7 Système et analysé certains des outils disponibles pour vous aider à gérer les processus en utilisant des services publics communs et des commandes spécifiques à SystemD.
Notez que cette liste n'est pas destinée à couvrir toutes les cloches et les sifflets de ce sujet, alors n'hésitez pas à ajouter vos propres outils et commandes préférés à cet article en utilisant le formulaire de commentaire ci-dessous. Les questions et autres commentaires sont également les bienvenus.
- « Comment héberger plusieurs terminaux Linux pour la visualisation et la collaboration avec Wemux
- L'histoire derrière «init» et «systemd» pourquoi «init» devait être remplacée par «systemd» dans Linux »