Kit de survie pour SystemD

Depuis quelques années la plupart des distribution GNU/Linux ont remplacé init V par SystemD, voyant comment le prendre en main si vous êtes habitué à Sysinit V.

Commandes générales

Comparaison des différentes commandes :

Action SysSysinit V SystemD Commentaire
Activer CentOS/Red-Hat : chkconfig $SERVICE on
Debian/Ubuntu : insserv $SERVICE
systemctl enable $SERVICE
Arrêter service $SERVICE stop systemctl stop $SERVICE
Démarrer service $SERVICE start systemctl start $SERVICE
Désactiver CentOS/Red-Hat : chkconfig $SERVICE off
Debian/Ubuntu : insserv -r $SERVICE
systemctl disnable $SERVICE
Modifier vim /etc/init.d/$SERVICE systemctl edit $SERVICE Voir ci-dessous.
Recharger service $SERVICE reload systemctl reload $SERVICE Prend en compte les modifications de configuration sans redémarrer le service.
Pas toujours disponible.
Redémarrer service $SERVICE restart systemctl restart $SERVICE
Vérifier service $SERVICE status systemctl status $SERVICE Pas toujours disponible dans les services Sysinit V.

Notez que la commande systemctl peut agir sur plusieurs services, les expressions régulières sont autorisées.
Par exemple systemctl restart mastodon-* redémarrera tout les services dont le nom commande par mastodon-

Créer un nouveau service

Utiliser la commande systemctl edit --full --force $SERVICE afin de créer un nouveau fichier de description de service à partir de rien, il sera stocké dans /etc/systemd/system/$SERVICE.service.

Une fois la modification effectuée, relancer SystemD pour prendre en compte les modifications : systemctl daemon-reload

Modification d'un service

Les fichier de deszcription de services de SystemD sont dans /lib/systemd/system/*.service, ceux-ci n'ont pas vocation à être modifiés ! Pour modifier un service, soit :

  • Utiliser la commande systemctl edit $SERVICE.service, cela créera un fichier de surcharge (override) dans /etc/system/$SERVICE.service.d/override.conf dont les modifications s'ajouteront ou remplaceront - si déjà existantes - les directives présentent dans le fichier de configuration de base du service.
  • Copier le fichier de description présent dans /lib/systemd/system/$SERVICE.service dans le répertoire /etc/systemd/system/, ce dernier aura alors la priorité, l'original sera totalement ignoré.

Une fois la modification effectuée, relancer SystemD pour prendre en compte les modifications : systemctl daemon-reload

SystemD en tant qu'utilisateur simple

SystemD gère les service au niveau utilisateur via l'option --user, c'est à dire des services qui ne sont pas démarrés au boot du système mais au login d'un utilisateur. Dans ce cas, la commande systemctl peut être utilisée sans sudo par l'utilisateur.

Les fichiers de description de services sont à placer dans ~/.config/systemd/user/$SERVICE.service.

Autres commandes

  • Lister les services : systemctl list-units, équivalant à chkconfig --list sous CentOS/Red-Hat.
  • Recharger SystemD : systemctl daemon-reload
Vus : 1176
Publié par Zergy : 41