Sous Linux, un service est un programme qui s'exécute en arrière-plan. Les services peuvent être démarrés à la demande ou au démarrage.
Si vous utilisez Linux comme système d'exploitation principal ou plate-forme de développement, vous traiterez avec différents services tels que serveur Web, ssh ou cron. Savoir répertorier les services en cours d'exécution ou vérifier l'état du service est important lors du débogage des problèmes système.
La plupart des distributions Linux récentes utilisent systemd comme système d'initialisation et gestionnaire de services par défaut.
Systemd est une suite d'outils pour la gestion des systèmes Linux. Il est utilisé pour démarrer la machine, gérer les services, monter automatiquement les systèmes de fichiers, enregistrer les événements, configurer le nom d'hôte et d'autres tâches système.
Cet article explique comment répertorier les services sous Linux.
Liste des services Linux #
Systemd utilise le concept d'unités, qui peuvent être des services, des sockets, des points de montage, des périphériques, etc. Les unités sont définies à l'aide de fichiers texte dans ini
format. Ces fichiers contiennent des informations sur l'unité, ses paramètres et les commandes à exécuter. Les extensions de nom de fichier définissent le type de fichier d'unité. Par exemple, les fichiers d'unité de service système ont un .service
extension.
systemctl
est un utilitaire de ligne de commande utilisé pour contrôler systemd et gérer les services. Il fait partie de l'écosystème systemd et est disponible par défaut sur tous les systèmes.
Pour obtenir une liste de toutes les unités de service chargées, tapez :
sudo systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
Chaque ligne de sortie contient les colonnes suivantes de gauche à droite :
UNIT
- Le nom de l'unité de service.LOAD
- Informations indiquant si le fichier de l'unité a été chargé dans la mémoire.ACTIVE
- L'état d'activation du fichier d'unité de haut niveau, qui peut être actif, en cours de rechargement, inactif, en échec, en cours d'activation, en cours de désactivation. C'est une généralisation duSUB
colonne.SUB
- L'état d'activation du fichier unité de bas niveau. La valeur de ce champ dépend du type d'unité. Par exemple, une unité de type service peut être dans l'un des états suivants :morte, abandonnée, en échec, inactive ou en cours d'exécution.DESCRIPTION
- Brève description du fichier d'unité.
Par défaut, la commande répertorie uniquement les unités actives chargées. Pour voir également les unités chargées mais inactives, passez le --all
choix :
sudo systemctl list-units --type service --all
Si vous voulez voir tous les fichiers unitaires installés, pas seulement ceux qui sont chargés, utilisez :
sudo systemctl list-unit-files
Affichage de l'état du service #
Pour vérifier l'état d'un service, utilisez le systemctl status
commande :
sudo systemctl status <service_name>.service
Où <service_name>
est le nom de l'unité de service que vous souhaitez vérifier. Par exemple, pour déterminer l'état actuel du service nginx que vous exécuteriez :
sudo systemctl status nginx.service
Vous pouvez omettre le suffixe ".service". systemctl status nginx
est identique à systemctl status nginx.service
.● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago
Docs: man:nginx(8)
Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3061064 (nginx)
Tasks: 2 (limit: 470)
Memory: 6.0M
CGroup: /system.slice/nginx.service
├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─3061065 nginx: worker process
Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...
La commande imprimera les informations suivantes :
Loaded
- Si l'unité de service a été chargée et le chemin complet vers le fichier de l'unité. Il indique également si l'unité est activée pour démarrer au démarrage.Active
- Si le service est actif et en cours d'exécution. Si votre terminal prend en charge les couleurs et que le service est actif et en cours d'exécution, le point (●
) et la partie "active (en cours d'exécution)" seront imprimées en vert. La ligne indique également la durée d'exécution du service.Docs
- La documentation du service.Process
- Informations sur les processus de service.Main PID
- Le PID du service.Tasks
- Le nombre de tâches comptabilisées pour l'unité et la limite de tâches.Memory
- Informations sur la mémoire utilisée.CGroup
- Informations sur les groupes de contrôle associés.
Si vous souhaitez uniquement vérifier l'état du service, utilisez le systemctl is-active
commande. Par exemple, pour vérifier que le service nginx est en cours d'exécution, vous exécuterez :
systemctl is-active nginx.service
active
La commande vous montrera l'état du service. Si le service est actif, la commande renvoie un état de sortie de 0, ce qui peut être utile lors de l'utilisation de la commande dans des scripts shell.
Conclusion #
Nous vous avons montré comment utiliser le systemctl
commande pour répertorier les services Linux et vérifier leur état.