Outils pour utilisateurs

Outils du site


systemd

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

systemd [2017/02/28 22:38] (Version actuelle)
Ligne 1: Ligne 1:
 +{{tag>RH sysadmin }}
 +
 +===== Systemd =====
 +
 +==== biblio ====
 +
 +[[https://​access.redhat.com/​documentation/​en-US/​Red_Hat_Enterprise_Linux/​7/​html/​System_Administrators_Guide/​chap-Managing_Services_with_systemd.html | RHEL7 sysadmin guide]]
 +
 +http://​www.tejasbarot.com/​2014/​07/​22/​rhel-7-centos-7-how-to-get-started-with-systemd/#​axzz3QIVQwgNa
 +
 +==== WTF ? ====
 +
 +Usine à gaz remplaçant la simplicité (et les limitations) d'​init. En passe d'​être utilisé sur la majorité des distributions.
 +
 +Permet notamment de lancer des services à la demande (cf xinetd), de paralléliser le lancement des services, de gérer les montages ...
 +
 +  - unitfile : identifiées par leur extension. contrôle différentes partie (mountpoint,​ services, "​runlevel"​). Se trouvent dans /​usr/​lib/​systemd/​system,​ /​etc/​systemd/​system . Utiliser ce dernier répertoire pour la personnalisation.
 +
 +==== systemctl tout court ====
 +
 +Affiche la liste des //units// activés et leur état
 +
 +De la même manière qu'​avec init, on peut change de //target// (systemctl rescue) ou arrêter (systemctl halt) etc le système.
 +
 +==== Dépendances ====
 +
 +Lister les dépendances d'un service: //systemctl --list-dependencies service//
 +
 +Lister les unités actives pour une target //systemctl --list-dependencies target//
 +
 +==== systemd-analyze ====
 +
 +Permet de faire un concours de qui démarre le plus rapidement.
 +
 +systemd-analyze tout court résume le temps de démarrage du système
 +
 +systemd-analyze blame tri par durée de démarrage les unités.
 +
 +systemd-analyze plot > graph.svg va générer un joli graphique représentant la même information
 +==== Désactiver ctrl+alt+del ====
 +
 +Avant c'​était /​etc/​inittab,​ maintenant il faut faire un lien symbolique:
 +<​code>​
 +systemctl mask ctrl-alt-del.target
 +</​code>​
 +
 +==== Groupes de service et gestion des ressources ====
 +
 +Les services systemd sont rassemblés dans des cgroups, qu'il est possible d'​interroger à l'aide des commandes //​systemd-cgls//​ et //​systemd-cgtop//​
 +
 +Les unités de type //scope// permettent de regrouper des services en vue de gérer les ressources utilisées.
 +
 +les unités de type //slice// permettent de ranger hiérarchiquement les ressources d'un groupe de processus
 +
 +
 +==== Recharger le daemon systemd ====
 +
 +Nécessaire quand on modifie un script d'init par exemple.
 +
 +<​code>​
 +systemctl daemon-reload
 +</​code>​
 +
 +==== Gestion des services ====
 +
 +Via des unit-files de type et d'​extension //service//
 +
 +Via la commande //systemctl CMD servicename //
 +
 +avec CMD:
 +  - status
 +  - start, stop, restart, try-restart,​ reload
 +  - is-active
 +  - enable, disable
 +  - is-enabled
 +
 +Afficher la liste des services en cours de fonctionnement:​
 +  systemctl list-units --type service
 +
 +Afficher la liste des services actifs / inactifs au démarrage:
 +  systemctl list-unit-files --type service
 +
 +
 +==== remplacer cron ====
 +
 +En mettant en place une unité de type //timer//:
 +<​code>​
 +[Unit]
 +Description=daily datetime sync
 +[Timer]
 +OnCalendar=daily
 +#voir man systemd.time pour plus de détail.
 +# par ex pour une exécution toutes les heures: OnCalendar=*-*-* *:00:00
 +[Install]
 +WantedBy=multiusers.target
 +</​code>​
 +
 +L'​inconvénient de cette méthode c'est quelle nécessite d'​avoir une unité de type //service// avec le même nom que l'​unité de type //timer// ci-dessus, qui décrit la tâche à planifier.
 +
 +Par exe:
 +<​code>​
 +[Unit]
 +Description=backup with borg
 +
 +[Service]
 +Type=oneshot
 +ExecStart=/​root/​bin/​backup.sh
 +</​code>​
 +==== remplacer fstab ====
 +
 +En mettant en place une unité de type //mount//:
 +<​code>​
 +[Mount]
 +What=/​dev/​md0
 +Where=/srv
 +Type=xfs
 +Options=defaults,​auto
 +
 +[Install]
 +WantedBy=multi-user.target ​
 +</​code>​
 +==== Faire son propre script d'init ====
 +
 +Créer un fichier dans /​etc/​systemd/​system avec l'​extension **.service** et le contenu suivant (exemple):
 +<​code>​
 +[Unit]
 +Description=script de démarrage foo
 +After=network.target remote-fs.target nss-lookup.target
 +
 +[Service]
 +Type=notify
 +WorkingDirectory=/​opt/​bin
 +ExecStart=/​opt/​bin/​bundleApps start
 +
 +[Install]
 +WantedBy=multi-user.target
 +</​code>​
 +
 +S'​aider des pages de man //​systemd.service , systemd.unit, ​ systemd.exec//​ (chaque **[en-tete]** est documenté)
 +
 +Relancer [[:​systemd|systemd]] ( // systemctl daemon-reload // )
 +
 +Activer et lancer le service (//​systemctl enable --now bundleApps //)
 +
 +Le mieux est d'​étudier directement les exemples [[https://​access.redhat.com/​documentation/​en-US/​Red_Hat_Enterprise_Linux/​7/​html/​System_Administrators_Guide/​sect-Managing_Services_with_systemd-Unit_Files.html|ici]]
 +
 +==== Définir un point de montage ====
 +
 +=== samba ===
 +<​code>​
 +cat /​etc/​systemd/​system/​mnt-Rotam.mount ​                                                            ​(0)(/​etc/​systemd/​system)(11:​27 ven. 30)
 +[Mount]
 +What=//​rotamfrsvr02/​IT
 +Where=/​mnt/​Rotam
 +Type=cifs
 +Options=credentials=/​home/​tom/​Documents/​Opendoor/​Clients/​Rotam/​cred
 +StopWhenUnneeded=true
 +</​code>​
 +
 +Pour un montage automatique,​ rajouter le fichier /​etc/​systemd/​system/​mnt-Rotam.[[:​automount|automount]]:​
 +<​code>​
 +cat /​etc/​systemd/​system/​mnt-Rotam.automount ​                                                        ​(0)(/​etc/​systemd/​system)(11:​27 ven. 30)
 +[Automount]
 +Where=/​mnt/​Rotam
 +</​code>​
 +
 +
 +# vim: set filetype=dokuwiki:​
  
systemd.txt · Dernière modification: 2017/02/28 22:38 (modification externe)