⚙️ Gestion des processus Linux

Dernière mise à jour : 30 Jun 2024

La gestion des processus sous Linux consiste à surveiller et contrôler les processus qui exécutent des tâches sur un système Linux.
Cela comprend l’exécution, la suspension et la terminaison des processus, ainsi que la surveillance des processus et l’utilisation des ressources système.

Les outils disponibles pour gérer les processus sous Linux incluent ps, top, kill, nice et renice.
Ces outils peuvent être utilisés pour surveiller et contrôler les processus sur un système Linux.


Comment fonctionnent les processus, les services, daemons, pid sous Linux ?

Les processus, les services, les daemons et les pid sont des concepts importants dans le fonctionnement du système d’exploitation Linux.

Un processus est un programme en cours d’exécution sur le système. Chaque processus est identifié par un numéro unique appelé pid (process id). Le système Linux utilise le gestionnaire de processus pour gérer les processus en cours d’exécution, en attribuant des ressources (mémoire, CPU, E/S, etc.) à chaque processus.

Un service est un programme qui s’exécute en arrière-plan sur le système pour fournir une fonctionnalité spécifique, telle que le serveur web Apache, le service de messagerie Postfix, le service de base de données MySQL, etc. Les services sont généralement lancés au démarrage du système et s’exécutent en continu jusqu’à ce qu’ils soient arrêtés manuellement ou que le système soit redémarré.

Un daemon est un programme qui s’exécute en arrière-plan sur le système pour effectuer des tâches spécifiques, telles que la surveillance des fichiers système, la mise à jour des bases de données, la gestion des imprimantes, etc. Les daemons sont généralement lancés au démarrage du système et s’exécutent en continu jusqu’à ce qu’ils soient arrêtés manuellement ou que le système soit redémarré.

Les pid (process id) sont des numéros uniques attribués par le système à chaque processus en cours d’exécution. Ils sont utilisés pour identifier les processus et les contrôler (démarrer, arrêter, suspendre, etc.) en utilisant des commandes ou des outils spécifiques. Les pid peuvent être affichés en utilisant la commande ps ou en lisant les fichiers de pid dans le dossier /var/run. Par exemple, la commande suivante affiche les pid des processus liés à Apache :

ps aux | grep apache2

Ce code affiche les pid des processus Apache2 dans la console.

Vous pouvez utiliser ces pid pour contrôler les processus Apache2 en utilisant des commandes telles que kill ou killall, ou en utilisant des outils spécifiques comme service ou systemctl. Par exemple, la commande suivante arrête le service Apache2 :

service apache2 stop

Quelles sont les commandes sous Linux qui permettent d’afficher la liste des processus et comment tuer un processus spécifique ?

Il existe plusieurs commandes sous Linux qui permettent d’afficher la liste des processus en cours d’exécution sur l’ordinateur, notamment :

  • ps : cette commande affiche la liste des processus en cours d’exécution, avec des informations telles que leur identifiant (PID), leur nom, leur utilisateur et leur temps d’exécution. Vous pouvez utiliser différentes options avec ps pour afficher des informations plus détaillées sur les processus, ou pour filtrer les processus affichés en fonction de différents critères.
  • top : cette commande affiche la liste des processus en cours d’exécution, avec des informations telles que leur utilisation des ressources (CPU, mémoire, etc.), leur priorité et leur temps d’exécution. Elle actualise ces informations en temps réel, ce qui permet de surveiller l’état des processus en cours d’exécution sur l’ordinateur.
  • htop : cette commande est similaire à top, mais elle offre une interface plus intuitive et plus facile à utiliser, avec des couleurs et des barres de progression pour visualiser l’utilisation des ressources par les processus. Elle permet également de trier et de filtrer les processus affichés, ainsi que d’exécuter des actions sur les processus (arrêter, mettre en arrière-plan, etc.) directement depuis l’interface. Pour tuer un processus spécifique, vous pouvez utiliser la commande kill en spécifiant l’identifiant (PID) du processus que vous souhaitez arrêter. Par exemple, si vous souhaitez arrêter le processus ayant pour PID 12345, vous pouvez utiliser la commande suivante :
$ kill 12345

Cette commande envoie un signal d’arrêt au processus, qui est généralement interprété comme une demande d’arrêt propre. Si le processus ne répond pas à ce signal, vous pouvez utiliser la commande kill -9 pour forcer l’arrêt immédiat du processus.

Comment lancer un processus en tache de fond sous Linux ?

Pour lancer un processus en tâche de fond sous Linux, vous pouvez utiliser l’opérateur & à la fin de la commande qui lance le processus. Cet opérateur indique au système d’exécuter le processus en arrière-plan, plutôt qu’en premier plan.

Par exemple, si vous souhaitez lancer le processus my_process en tâche de fond, vous pouvez utiliser la commande suivante :

$ my_process &

Une fois que vous avez lancé le processus en tâche de fond, vous pouvez continuer à utiliser votre terminal pour exécuter d’autres commandes, tandis que le processus en arrière-plan continue à s’exécuter. Vous pouvez utiliser la commande jobs pour afficher la liste des processus en arrière-plan en cours d’exécution sur votre système, ainsi que leur statut (en cours d’exécution, suspendu, etc.).

Si vous souhaitez mettre en pause un processus en arrière-plan, vous pouvez utiliser la commande fg suivie de l’identifiant du processus (job ID), comme ceci :

$ fg %1

Cette commande ramène le processus avec l’identifiant 1 en premier plan, ce qui suspend temporairement les autres processus en arrière-plan.

Quels sont les différents gestionnaires de services sous Linux ?

Il existe plusieurs gestionnaires de services sous Linux, chacun ayant des fonctionnalités et des interfaces différentes. Certains des gestionnaires de services les plus courants sont :

  • Systemd : Systemd est un gestionnaire de services très populaire qui est utilisé dans de nombreuses distributions Linux modernes, telles que Ubuntu, Red Hat Enterprise Linux et CentOS. Il permet de gérer les démarrages de services, les dépendances et les dépendances de services, et offre une interface en ligne de commande et un journal des événements pour surveiller l’état des services.
  • Upstart : Upstart est un gestionnaire de services qui a été introduit dans Ubuntu à partir de la version 6.10. Il utilise un modèle d’événement pour gérer les démarrages de services et prend en charge les dépendances entre services.
  • init : init est le gestionnaire de services par défaut dans les versions antérieures d’Ubuntu et de nombreuses autres distributions Linux. Il utilise un fichier de configuration spécifique pour chaque service et ne prend pas en charge les dépendances entre services.

En outre, il existe d’autres gestionnaires de services tels que runit et s6, qui offrent des fonctionnalités similaires à celles de Systemd et Upstart. Il est important de noter que chaque distribution Linux peut avoir son propre gestionnaire de services par défaut, et que vous devrez utiliser les commandes et les outils associés à ce gestionnaire pour gérer les services sur votre système.

Comment utiliser Systemd pour gérer les services sous Linux ?

Pour utiliser Systemd pour gérer les services sous Linux, vous devez d’abord vous assurer que Systemd est installé sur votre système. La plupart des distributions Linux modernes utilisent Systemd par défaut, mais vous pouvez vérifier si c’est le cas en exécutant la commande suivante :

$ systemctl --version

Si la commande renvoie la version de Systemd, cela signifie que Systemd est installé sur votre système. Sinon, vous devrez peut-être l’installer en utilisant les outils de gestion de paquets de votre distribution.

Une fois que vous avez vérifié que Systemd est installé, vous pouvez utiliser la commande systemctl pour gérer les services sur votre système. Par exemple, pour afficher la liste des services en cours d’exécution, vous pouvez utiliser la commande suivante :

$ systemctl list-units --type=service

Pour démarrer un service, arrêter un service ou redémarrer un service, vous pouvez utiliser les commandes suivantes :

# Démarrer un service
$ systemctl start <service>

# Arrêter un service
$ systemctl stop <service>

# Redémarrer un service
$ systemctl restart <service>

Remplacez <service> par le nom du service que vous souhaitez gérer Vous pouvez également utiliser la commande systemctl status <service> pour afficher l’état actuel d’un service, y compris les informations de démarrage et les erreurs éventuelles.

En résumé, Systemd offre une puissante interface en ligne de commande pour gérer les services sous Linux, avec des fonctionnalités telles que la gestion des dépendances et des dépendances de services, ainsi qu’un journal des événements pour surveiller l’état des services.