Capocchi Laurent Doctorant en Informatique [email protected] http://spe.univ-corse.fr/capocchiweb Chapitre 5: Noyau Linux et Gestion des Processus Chapitre 5: Noyau Linux et Gestion des Processus Objectifs Comprendre les notions de noyau Linux et des modules. Le système GNU/Linux IUP NTIC2-1013 - 17/11/05 Comprendre la notion de processus et de signaux. Apprendre à gérer le multitâche. Éléments techniques abordés Chapitre 5 Noyau Linux et Gestion des Processus Les commandes ps, kill, nice, renice, fuser, nohup fg, bg, jobs Les fichiers /etc/cron.allow, /etc/cron.deny /var/adm/cron/cron.allow, /var/dm/cron/cron.deny Les répertoires /var/spool/at, /var/spool/cron /var/spool/cron/atjobs, /var/spool/cron/crontabs Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Sommaire Le noyau Linux Principe. Fonctionnement du noyau. Utilisation des modules. Les processus Principe. La hiérarchie des processus. La communication interprocessus: les signaux. Gestion des processus interactifs, avant et arrière plan. Gestion des processus. Les traitements différés. Les démons. Questions de révision Chapitre 5: Noyau Linux et Gestion des Processus Noyau Linux Principe Le noyau est la couche de base d'un système d'exploitation et il gère: la mémoire, l'accès aux périphériques (disque dur, carte son, carte réseau, etc...), la circulation des données sur le bus, les droits d'accès, les multiples processus qui correspondent aux multiples tâches que l'ordinateur doit exécuter en même temps, etc... Le noyau ne gère pas: le mail, l'affichage des pages Web, le traitement du texte. Le noyau a l'originalité d'être multi-utilisateurs et multi-tâches et de fonctionner sur de nombreuses plates-formes (Intel, Apple, etc...). Il est conforme à la norme POSIX et est distribué sous Licence GPL. Il appartient au monde du libre lui garantit une correction rapide des erreurs qui pourraient être découvertes. La commande permettant de connaître la version d'un noyau est uname -a. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Noyau Linux Chapitre 5: Noyau Linux et Gestion des Processus Noyau Linux Principe Principe Le noyau Linux permet le contrôle à bas niveau du matériel ainsi que cinq fonctions essentielles: Le démarrage du système; la gestion des processus: le noyau permet le contrôle de tous les processus du système et s'assure que chacun d'entre eux dispose d'une partie raisonnable de mémoire et de cycles processeurs; la communication inter-processus (IPC, Inter Process Communication): le noyau contrôle la communication entre les processus en utilisant un système de mémoire partagée, de tubes (pipes) et de tubes nommés. Toute cette gestion est conforme au standard POSIX. l'interaction avec le matériel: le noyau fournit aux processus un accès aux périphériques matériels. Il dispose d'instructions générales pour des périphériques standards (disque dur par exemple) et permet également l'utilisation de pilotes spécifiques. Une distribution Linux est un ensemble cohérent de plusieurs choses: un noyau Linux, des programmes, en majorité libres (un navigateur Web, un lecteur de Mail, un serveur FTP, etc...), une méthode pour installer et désinstaller facilement ces programmes, un programme d'installation du système d'exploitation. Abus de langage en désignant par le terme Linux qui est en fait une distribution Linux. La plupart des distributions sont gratuites, car constituées exclusivement de logiciels libres ou de programmes propriétaires gratuits. le système de fichiers virtuel (VFS, Virtual FileSystem): Linux dispose d'une interface spéciale du noyau appelée VFS qui lui permet de supporter plusieurs systèmes de fichiers. Cette interface permet de traiter les systèmes de fichiers de manière unifiée, et apparaît donc comme un pilote de périphérique, mais pour les systèmes de fichiers. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Noyau Linux Chapitre 5: Noyau Linux et Gestion des Processus Noyau Linux Fonctionnement Le noyau Linux est dit monolithique et uniforme. Un noyau monolithique fonctionne comme un seul grand noyau et non pas à l'aide de composants distincts. Un noyau est uniforme quand chaque fonction est exécutée de la même manière à chaque fois qu'elle est lancée. Le noyau est cependant très modulaire et conserve toutes ses fonctions dans la même adresse mémoire, les fonctions communiquant alors grâce à cette adresse. Pour garantir la stabilité du système, il place chacun des pilotes chargés dans une "bulle" virtuelle de sorte que les erreurs ne puissent pas se propager. Toutes les fonctions du noyau sont localisées dans des éléments de code modulaires qui peuvent être soit intégrés au noyau compilé, soit compilés séparément en tant que modules. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Utilisation des modules Qu'est-ce qu'un module ? Techniquement, les modules sont des morceaux de noyau qui peuvent être insérés ou enlevés sans redémarrer l'ordinateur. En pratique, un module est un pilote d'un périphérique ou d'une fonctionnalité. La commande permettant de lister l'ensemble des modules chargés est lsmod. Les commandes permettant de charger er de décharger les modules sont repsectivement rmmod (modprobe -r) et insmod (modprobe -i). le fichier /etc/modules permet de spécifier quels modules doivent être chargés au démarrage. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Les processus Chapitre 5: Noyau Linux et Gestion des Processus Les processus La hiérarchie des processus Principe un processus (ou tâche) est un logiciel autonome en cours d'exécution. 1 init 2910 nfsd Le système UNIX identifie chaque processus grâce à un numéraux unique, son PID (Process IDentification). Chaque processus possède un propriétaire référencé par un UID. 2501 syslog 14214 popper Utilisateur L'ensemble des processus forment une hiérarchie de processus pères et de processus fils. Système Chaque processus à un processus père référencé par un numéro PPID (Parent Process Identification). Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 21238 92123 telnetd bash 1352 22107 92504 inetd telnetd ksh Chapitre 5: Noyau Linux et Gestion des Processus Les processus La communication interprocessus: les signaux La communication interprocessus: les signaux La communication entre les processus passe par des signaux qu'ils s'échangent. Un signal permet de contrôler le déroulement d'un processus. On fait correspondre un numéro à chaque signal. Un signal peut avoir un numéro différent selon le système d'exploitation (SIGTSTP porte le numéro 20 sous Linux et le numéro 18 sous AIX). La commande trap permet d'activer ou de désactiver le programme associé au signal. Nom du signal SIGHUP SIGINT SIGKILL SIGBUS SIGSYS Numéro 1 2 9 10,7 12 Interprétation Déconnexion du terminal Interruption depuis le clavier (CTRL+C) Signal « KILL » Erreur de bus Appel système avec mauvais arguments Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 imapd Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Les processus 10323 $ trap '' 2 associe la commande « vide » au signal SIGINT (2), de qui inhibe la combinaison de touches CTRL+C. Certains signaux comme SIGKILL ne peuvent pas être inhibés, ce qui assure que l'on pourra toujours tuer un processus. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Les processus Chapitre 5: Noyau Linux et Gestion des Processus Les processus Gestion des processus interactifs, avant et arrière-plan Le fonctionnement normal du shell oblige l'utilisateur à attendre que le processus lancé en avant-plan soit terminer pour pouvoir en exécuter un autre au niveau d'une fenêtre de terminal. Le lancement de la tâche en arrière-plan permet de ne pas bloquer la ligne de commande. Le nombre de processus en arrière-plan n'est pas limité alors qu'il ne peut y avoir qu'un seul processus en avant-plan. Le lancement d'une ligne de commandes en arrière plan utilise le signe & à la fin de la ligne. La commande fg (pour foreground) permet de faire passer une tâche s'exécutant en arrière plan vers le l'avant. La commande bg permet l'opération inverse. Pour faire passer en arrière plan une tâche lancée en avant-plan, il faut tout d'abord la suspendre sans l'arrêter, avec la combinaison CTRL+Z (signal SIGTSTP) Gestion des processus interactifs, avant et arrière-plan exemple: recherche de tous les fichiers et répertoires orphelins. $ find / -nouser -print > /tmp/liste.nouser ˆZ [1]+ Stopped find / -nosuer -print > /tmp/liste.nouser $ bg [1]+ find / -nosuer -print > /tmp/liste.nouser & jobs [1]+ Running & find / -nosuer -print > /tmp/liste.nouser fg find / -nosuer -print > /tmp/liste.nouser ˆC $ Les commandes fg et bg peuvent être saisies avec, en argument, le numéro du processus à gérer. $ fg %2 si le numéro 2 correspond à la numérotation fourni par jobs. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Les processus Gestion des processus Les commandes ps Affiche les informations sur les processus. Chapitre 5: Noyau Linux et Gestion des Processus Les processus Gestion de processus Affichage des processus: la commande ps fuser Gère les processus attaché à un répertoire. $ ps PID 8465 8512 nice et renice Ces deux commandes changent les priorités. PID: numéro du processus nohup Lance un processus qui ne sera pas « tué » à la déconnexion. TTY: numéro de ligne de communication associé au processus crontab Définit la liste des tâches différées à exécuter régulièrement. CMD: commande associée au processus kill Envoie un signal à un ou plusieurs processus. at Permet d'exécuter une commande en différée. TTY pts/1 pts/1 TIME CMD 00:00:00 bash 00:00:00 ps TIME: temps d'exécution du processus Les options de la commande ps permettent d'afficher: -l: les informations complètes (UID, PPID....) -a: les processus des autres utilisateurs -e: la liste de tous les processus, sauf ceux du noyau -u: les informations de l'utilisateur spécifié. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Les processus Gestion de processus Gestion de processus Envoi de signaux: la commande kill Gestion des processus attachés aux répertoires: la commande fuser Ce signal tue les processus. $ kill -option -num_signal pid1 pid2 .... Si aucun numéro de signal n'est précisé, c'est SIGTERM (15) qui est envoyé. Les PID des processus sont obtenues avec la commande ps. kill -l équivaut à trap -l $ kill -kill 0 tue tous les processus de la session actuelle et déconnecte l'utilisateur qui la saisie. $ kill -kill 1 tue tous les processus appartenant à l'utilisateur qui saisit cette commande. $ jobs [1]- stopped [2]+stopped $ kill %2 [2]+ Terminated Chapitre 5: Noyau Linux et Gestion des Processus Les processus sleep 5 sleep 10 Par défaut, cette commande affiche les numéros de processus (PID) qui utilisent les fichiers ou les systèmes de fichiers indiqué en argument. Les options sont très différentes selon les systèmes UNIX. Un suffixe apparaît à la suite du numéro du processus indiquant le type d'accès du processus: c Accès au répertoire courant e Accès à un programme en cours d'exécution r Accès au répertoire racine m ou s Accès à un fichier en mémoire ou à une bilbio. partagée. La commande fuser avec l'option -k arrête tous les processus: # fuser -k /home/durant /home/durant: 343420023c 11212230c 23232323c sleep 10 Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Les processus Gestion de processus Gestion des priorités: les commandes nice et renice: Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Les processus Chapitre 5: Noyau Linux et Gestion des Processus Les traitements différés La commande nohup La commande nice lance l'exécution d'une commande avec une priorité plus faible ou plus forte. Lorsqu'un processus s'exécute, la déconnexion de la session lui envoie un signal SIGHUP qui l'arrête. Plus la valeur passé en argument est élevée, plus le processus sera moins prioritaire. Le commande nohup exécute la ligne de commandes passées en argument et inhibe le signal SIGHUP. Chaque utilisateur peut diminuer la priorité de ces processus mais seul root peut l'augmenter. Si l'exécution affiche des informations à l'écran, celles-ci sont sauvegardées dans le fichier nohup.out. $ nice -incrément commande $ nohup find / -print 2 > /dev/null & [1] 234 $ ps -f | grep find martin 234 .... pts/1 find / -print commande est la ligne de commande à exécuter incrément est l'ajustement de la priorité (défaut 10). La commande ps -l permet de faire apparaître la valeur de priorité dans une colonne notée NI. La commande renice change la valeur de priorité d'un processus actif. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 $exit connexion closed by foreign host Après déconnexion l'utilisateur martin se connecte à nouveau. Le processus lancé avec nohup est toujours actif, il n'est rattaché à aucun terminal (colonne TTY ?), et le processus père et init. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Les processus Chapitre 5: Noyau Linux et Gestion des Processus Les processus Les traitements différés Les traitements différés La commande at La commande crontab La commande at planifie l'exécution d'une commande en différé. Planifie les tâches répétitives de l'utilisateur qui la saisie. L'accès à cette commande est contrôlé par deux fichiers: /var/adm/cron/at.allow (AIX) ou /etc/ar.allow (Linux): contient la liste des noms d'utilisateurs autorisés à se servir de la commande. Si ce fichier n''existe pas, seul l'utilisateur root peut l'utiliser. Utilisé par le root pour lancer automatiquement: /var/adm/cron/at.deny (AIX) ou /etc/at.deny (Linux): contient la liste de noms de utilisateurs qui ne sont pas autorisé à se servir de la commande at. Le format de la date peut être AAMMJJhhmm (AIX) ou hh: mm JJ/MM/AA. la date du 10 mars 2004 à 22h sous AIX $ at -t 0403102200 find /tmp -nouser -print 2 > /dev/null ˆD le nettoyage de fichiers de /tmp toutes la nuits, la recherche des fichiers ou des répertoire « orphelins » une foi par semaine ou par moi, le redémarrage du serveur tous les soirs.... Deux fichier de configuration: cron.allow et cron.deny Deux options principales: -l: Affiche le fichier de planification de l'utilisateur -e: Sous Linux, édite le fichier de planification en mode pleine page. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Les processus Les démons Ce sont des processus particuliers qui sont toujours actifs. Leur non possède souvent le suffixe « d » (pour daemon). Le rôle d'un démon est de gérer les services proposés par le serveur, qu'il s'agisse de démons système, comme la planification des tâches (cron), ou réseau, comme telnetd. L'activation des démons peut se faire: au démarrage de la machine (fichier /etc/inittab), à la demande. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Résumé Chapitre 5: Noyau Linux et Gestion des Processus Le noyau Linux est: Multi-utilisateurs et multi-tâches. Conforme à la norme POSIX et est distribué sous Licence GPL. Il permet: Le démarrage du système et la gestion des processus. La communication inter-processus et l'interaction avec le matériel. La gestion de plusieurs FS (VFS). Les processus correspondent aux logiciels actifs. Chaque processus (avec un numéro unique PID) est autonome, possède un processus père (avec un numéro PPID). L'activité du serveur est représenté par une hiérarchie de processus pères et de processus fils dont le premier est init. Lorsque le démons est lancé à la demande il est pris en charge par le « superdémon », inetd. Les signaux permettent la communication entre processus et sont des événements non prévu dans le traitement normal du logiciel. Les démons sont des processus que l'on peut administrer comme les autres avec la commande kill. Les démons sont des processus actif en permanence et rendent des service intern (planification de tâches) ou externes (services réseaux). Les démons sont lancés soit au démarrage (fichiers /etc/inittab, /etc/rc, ...) soit à la demande quand il sont pris en charge par le « superdémon » inetd. Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Chapitre 5: Noyau Linux et Gestion des Processus Questions de révision 1.Quelle est la commande qui permet de connaître la version d'un noyau? Chapitre 5: Noyau Linux et Gestion des Processus Bibliographie et Webographie 2.Qu'est ce que le PID et le PPID d'un processus ? 3.Quel est le rôle des signaux ? UNIX & LINUX, Jean-Michel Léry, Pearson Education. 4.Quel est le nom du signal qui arrête un processus interactif ? 5.Comment faire pour exécuter une commande en arrière-plan ? 6.Quelle est la différence entre la commande ps -f et la commande ps -ef ? 7.Quelle commande permet de tuer un processus particulier, et quelle commande permet de tuer les processus attachés à un répertoire ? 8.Une valeur positive pour la commande de nice augmente-t-elle la priorité du processus ? 9.Quelle est la différence entre la commande nohup et at ? 10.Quelle est la commande qui permet de planifier des traitements différés ? Quel est le nom du démon qui gère le déclenchement de ces traitements ? 11.Comment se nomment les deux fichiers qui donnent accès à la commande at ? Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05 Université de Corse - IUP NTIC2-1013 – Le système GNU/Linux - 9/11/05