Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
creer_un_service_avec_systemd [Le 31/08/2022, 23:59]
moths-art Passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
creer_un_service_avec_systemd [Le 17/12/2024, 12:10] (Version actuelle)
geole [Exemple de service cyclique.] servic utilisateur
Ligne 62: Ligne 62:
 </​code>​ </​code>​
  
 +<note important>​Attention : pour un service user, il faut remplacer ''​WantedBy=multi-user.target''​ par ''​WantedBy=default.target''​.</​note>​
 ===== Type de services systemd ===== ===== Type de services systemd =====
  
Ligne 69: Ligne 70:
   * Un service de type **oneshot** est similaire à un service de type **simple**. Cependant, systemd attend que le processus se termine avant de continuer ses traitements. **Ce type de service est typiquement utilisé comme équivalent aux commandes lancées au démarrage via les scripts d'init system V**. Cela permet à systemd de remplacer ce mécanisme. De ce fait, avec systemd des nouveaux services apparaissent,​ alors qu'ils auraient été simplement des scripts d'init avec SysVinit.   * Un service de type **oneshot** est similaire à un service de type **simple**. Cependant, systemd attend que le processus se termine avant de continuer ses traitements. **Ce type de service est typiquement utilisé comme équivalent aux commandes lancées au démarrage via les scripts d'init system V**. Cela permet à systemd de remplacer ce mécanisme. De ce fait, avec systemd des nouveaux services apparaissent,​ alors qu'ils auraient été simplement des scripts d'init avec SysVinit.
   * Un service de type **dbus** est similaire à un service de type **simple**. Cependant, le processus du service doit obtenir un nom via D-Bus. systemd pourra alors traiter les autres unités.   * Un service de type **dbus** est similaire à un service de type **simple**. Cependant, le processus du service doit obtenir un nom via D-Bus. systemd pourra alors traiter les autres unités.
-  * Un service de type **notify** est similaire à un service de type **simple**. Cependant, c'est le processus du service qui avertira systemd (via la fonction ​sd_notfy(3)) qu'il peut traiter les autres unités.+  * Un service de type **notify** est similaire à un service de type **simple**. Cependant, c'est le processus du service qui avertira systemd (via la fonction ​sd_notify(3)) qu'il peut traiter les autres unités.
  
 ===== Exemples de services et leur fichier de configuration===== ===== Exemples de services et leur fichier de configuration=====
Ligne 82: Ligne 83:
 RemainAfterExit=yes RemainAfterExit=yes
 ExecStart=/​usr/​libexec/​iptables.init start ExecStart=/​usr/​libexec/​iptables.init start
-ExecStop=/​usr/​libexec/​iptables.init stop +ExecStop=/​usr/​libexec/​iptables.init stop
 </​file>​ </​file>​
  
Ligne 117: Ligne 118:
 [Install] [Install]
 WantedBy=multi-user.target WantedBy=multi-user.target
-</​file> ​+</​file>​
  
   * ''​Description''​ permet de donner une description du service qui apparaîtra lors de l'​utilisation de la commande ''​systemctl status <​nom_du_service>''​   * ''​Description''​ permet de donner une description du service qui apparaîtra lors de l'​utilisation de la commande ''​systemctl status <​nom_du_service>''​
Ligne 164: Ligne 165:
  
 ==== Exemple de service cyclique. ==== ==== Exemple de service cyclique. ====
-Création du fichier de timer        +=== Service systeme === 
 + 
 +Création du fichier de timer
 <file sh /​etc/​systemd/​system/​MAJ0.timer>​ <file sh /​etc/​systemd/​system/​MAJ0.timer>​
 [Unit] [Unit]
 Description=Lance une mise à jour de l'​ordinateur quinze minutes après le démarrage de la machine et  itère toutes les trente minutes. Description=Lance une mise à jour de l'​ordinateur quinze minutes après le démarrage de la machine et  itère toutes les trente minutes.
 [Timer] [Timer]
-OnBootSec=15minutes ​  ​+OnBootSec=15minutes
 # le service démarrera 15 minutes après le démarrage de la machine # le service démarrera 15 minutes après le démarrage de la machine
-OnUnitActiveSec=30minutes ​ +OnUnitActiveSec=30minutes
 Persistent=true Persistent=true
 # le service démarrera toutes les trente minutes après la dernière activation du timer # le service démarrera toutes les trente minutes après la dernière activation du timer
Ligne 189: Ligne 192:
 </​file>​ </​file>​
 Avec les commandes de gestion associées Avec les commandes de gestion associées
-<​code>​sudo systemctl enable MAJ0.timer ​+<​code ​bash>sudo systemctl enable MAJ0.timer ​
 sudo systemctl start  MAJ0.timer sudo systemctl start  MAJ0.timer
 sudo systemctl status MAJ0.timer sudo systemctl status MAJ0.timer
 </​code>​ </​code>​
 +=== Service utilisateur ===
 +Création et activation du service
 +<code bash>cat <<"​EOF"​ >​$HOME/​.config/​systemd/​user/​Alerte.service
 +[Unit]
 +Description=Rappeler que le moment est venu.
 +[Service]
 +Type=simple
 +ExecStart=zenity --warning --text " C'est l'​heure. Monseigneur."​
 +EOF
 +sleep 1
 +systemctl --user enable Alerte.service;​
 +systemctl --user start  Alerte.service;</​code>​
 +Création et activation des déclenchements
 +<code bash>cat <<"​EOF"​ >​$HOME/​.config/​systemd/​user/​Alerte.timer
 +[Unit]
 +Description=indique les moments retenus.
 +[Timer] ​
 +OnCalendar=Mon-Sat *-*-* 10:20:30
 +OnCalendar=Sun *-*-* 12:14:16
 +[Install]
 +WantedBy=timers.target
 +EOF
 +sleep 1
 +systemctl --user enable Alerte.timer;​
 +systemctl --user start  Alerte.timer;</​code>​
 +
 +
  
 ====Exemple de service avancé avec la base graphe neo4j==== ====Exemple de service avancé avec la base graphe neo4j====
Ligne 212: Ligne 242:
  
 # Type de l'​Unité systemd. # Type de l'​Unité systemd.
-#Les différents types d'​unités sont : +#Les différents types d'​unités sont :
 #    service : pour un service/​démon ; #    service : pour un service/​démon ;
 #    socket : pour une socket réseau (de tous types : UNIX, Internet, fichier etc.) ; #    socket : pour une socket réseau (de tous types : UNIX, Internet, fichier etc.) ;
Ligne 230: Ligne 260:
 #​https://​www.freedesktop.org/​software/​systemd/​man/​systemd.service.html #​https://​www.freedesktop.org/​software/​systemd/​man/​systemd.service.html
 [Service] [Service]
-#Lance le service dans un processus système indépendant. ​+#Lance le service dans un processus système indépendant.
 # simple, forking, oneshot, dbus, notify ou idle sont les valeurs possibles de Type=. # simple, forking, oneshot, dbus, notify ou idle sont les valeurs possibles de Type=.
 Type=forking Type=forking
Ligne 279: Ligne 309:
 #Définit des limites logicielles ou matérielles pour le processus exécuté. #Définit des limites logicielles ou matérielles pour le processus exécuté.
 #​https://​www.freedesktop.org/​software/​systemd/​man/​systemd.exec.html#​ #​https://​www.freedesktop.org/​software/​systemd/​man/​systemd.exec.html#​
-# Correspond à ulimit -n 60000. ​+# Correspond à ulimit -n 60000.
 # C'est le nombre maximum de fichiers pouvant être ouvert simultanément pour les processus fils du service. # C'est le nombre maximum de fichiers pouvant être ouvert simultanément pour les processus fils du service.
 LimitNOFILE=60000 LimitNOFILE=60000
  • creer_un_service_avec_systemd.1661983164.txt.gz
  • Dernière modification: Le 31/08/2022, 23:59
  • par moths-art