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
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.
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.
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.