Vous êtes ici

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

Tags: 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer