Gérer les services avec systemctl
Cet article va vous présenter les principales commandes permettant de gérer les services sous Linux pour les distributions utilsant SystemD. Naturellement Ubuntu en fait partie tout comme Redhat / CentOS, Fedora ou Debian
La commande principale et presque unique est : systemctl.
SystemD est la manière dont les processus seront démarré sur votre machine.
Si vous voulez visualiser les services qui tournent vous pouvez lancer les commandes suivant :
# pstree
qui donne pour le début le résultat suivant :
systemd─┬─ModemManager─┬─{gdbus}
│ └─{gmain}
├─NetworkManager─┬─dnsmasq
│ ├─{gdbus}
│ └─{gmain}
├─accounts-daemon─┬─{gdbus}
│ └─{gmain}
├─acpid
...├─udisksd─┬─{cleanup}
│ ├─{gdbus}
│ ├─{gmain}
│ └─{probing-thread}
└─upowerd─┬─{gdbus}
└─{gmain}
ou
# ps -ef
qui donne :
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:04 ? 00:00:02 /sbin/init splash
root 224 1 0 08:04 ? 00:00:00 /lib/systemd/systemd-journald
root 249 1 0 08:04 ? 00:00:00 /lib/systemd/systemd-udevd
root 366 2 0 08:04 ? 00:00:00 [irq/28-mei_me]
root 478 2 0 08:04 ? 00:00:00 [kvm-irqfd-clean]
systemd+ 588 1 0 08:04 ? 00:00:04 /lib/systemd/systemd-timesyncd
root 770 1 0 08:04 ? 00:00:00 /usr/sbin/ModemManager
root 786 1 0 08:04 ? 00:00:00 /usr/sbin/smartd -n
On voit bien que systemd est bien le premier processus lancé. Il apparait out en haut avec pstree et il a la numéro 1 et son papa est le numéro 0 : le kernel.
Ce qui est marqué entre crochet tel que la ligne :
root 2 0 0 08:04 ? 00:00:00 [kthreadd]
n'est pas un processus mais un thread lancé par le noyau. Il ne nous intéresse pas. Ils sont gérés par le noyau. Ce qui nous intéresse sont les services sur lesquels nous avons la main dans le sens où nous pouvons les lancer et / ou les arrêter.
Pour lancer un service comme le serveur web apache vous passer la commande suivante :
# sudo systemctl start sshd
On pourrait utliser l'ancienne commande "service" qui de toute façon lancera bien la comamnde "systemctl".
Quand vous utlilisez cette commande, si le système en vous dit rien, c'est que tout c'est bien passé.
Si vous souhaitez connaître l'état d'un service vous passez la commande :
# systemctl status sshd
qui donne :
alors qu'avant le lancement j'avais le résultat suivant :
Quelles sont les informations affichées par l'option "status" :
- l'état du servive sous la forme d'un point de couleur :
- vert : le service est lancé et fonctionnel
- rouge : on a lancé le service mais il s'est planté
- noir : le service n'est pas lancé
- le fichier de configuration du service
- l'indication sur le fait que le service est lancé automatiquement au boot ou non
- vendor preset indique la configuration du lancement par défaut
- un extrait des logs.
Lister les services:
Pour lister les services lancez la commande suivante :
# sudo systemctl list-units --type=target --all
qui donne :
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
emergency.target loaded inactive dead Emergency Mode
failsafe-graphical.target loaded inactive dead Graphical failsafe fallback
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network-pre.target loaded active active Network (Pre)
network.target loaded active active Network
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Paths
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
rescue.target loaded inactive dead Rescue Mode
shutdown.target loaded inactive dead Shutdown
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
● syslog.target not-found inactive dead syslog.target
time-sync.target loaded active active System Time Synchronized
timers.target loaded active active Timers
umount.target loaded inactive dead Unmount All Filesystems
Supprimer l'option "--all" pour n'avoir que les services actifs.
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network-pre.target loaded active active Network (Pre)
network.target loaded active active Network
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Paths
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
Lancer automatiquement un service:
Pour qu'un service soit démarré automatiquement au boot de votre machine passez la commande suivante :
# systemctl enable httpd
A 'inverse si par exemple vous n'avez pas besoin d'un serveur web actif sur votre machine passez la commande suivante :
# systemctl disable httpd
Cela ne vous empếchera pas de lancer votre serveur Web plus tard.
Afficher la configuration d'un service:
Pour afficher la configuration d'un service, utilisez encore la commande systemctl :
# sudo systemctl cat sshd
qui donne :
# /lib/systemd/system/ssh.service
[Unit]
Description=OpenBSD Secure Shell server
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run
[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
[Install]
WantedBy=multi-user.target
Alias=sshd.service
Fait le 02/10/2017
- Identifiez-vous pour poster des commentaires
Commentaires récents