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 11/09/2018, 14:46]
109.26.134.132 correction d'nu FIXME d'après la doc, la balise After n'arrête pas un service si la condition change dans le temps
creer_un_service_avec_systemd [Le 11/09/2022, 11:53] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 21: Ligne 21:
 <​code>​sudo cp -r /​etc/​systemd/​system /​etc/​systemd/​system.save$(date +%Y%m%d)</​code></​note>​ <​code>​sudo cp -r /​etc/​systemd/​system /​etc/​systemd/​system.save$(date +%Y%m%d)</​code></​note>​
  
-Une fois le fichier de configuration de service ​crée, il faut l'​activer pour qu'il soit pris en compte par le système et lancé à chaque démarrage.+Une fois le fichier de configuration de service ​créé, il faut l'​activer pour qu'il soit pris en compte par le système et lancé à chaque démarrage.
 <​code>​systemctl enable <nom du service>​.service</​code>​ <​code>​systemctl enable <nom du service>​.service</​code>​
  
Ligne 29: Ligne 29:
  
 Pour plus d'​infos sur les diverses commandes de gestion, voir la page [[:​systemd#​les_services|systemd]] Pour plus d'​infos sur les diverses commandes de gestion, voir la page [[:​systemd#​les_services|systemd]]
 +
 +<note help>
 +Il est possible d'​utiliser un service au niveau utilisateur,​ dans ce cas, les fichiers de configuration se trouvent dans **~/​.config/​systemd/​user/​**
 +
 +
 +Pour un service utilisateur il faut ajouter aux commandes le paramètre --user :
 +
 +<​code>​
 +systemctl --user enable <nom du service>​.service
 +systemctl --user start <nom du service>​.service
 +systemctl --user status <nom du service>​.service
 +</​code>​
 +
 +</​note>​
 +
 +Pour créer un service utilisateur :
 +
 +<​code>​
 +systemctl --user edit <nom du service>​.service --full --force
 +</​code>​
 +
 +Pour éditer un service utilisateur :
 +
 +<​code>​
 +systemctl --user edit <nom du service>​.service --full
 +</​code>​
 +
 +Pour ajouter une surcharge (drop-in) sur un service utilisateur :
 +
 +<​code>​
 +systemctl --user edit <nom du service>​.service
 +</​code>​
  
 ===== Type de services systemd ===== ===== Type de services systemd =====
Ligne 50: Ligne 82:
 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 62: Ligne 94:
  
 ====Exemple de service de type "​simple"​==== ====Exemple de service de type "​simple"​====
-Un exemple est le service deluged qui permet de lancer le service correspondant à la version ​deamon ​du client bit-torrent [[:​deluge]].+Un exemple est le service deluged qui permet de lancer le service correspondant à la version ​daemon ​du client bit-torrent [[:​deluge]].
  
 <file txt /​etc/​systemd/​system/​deluged.service>​ <file txt /​etc/​systemd/​system/​deluged.service>​
Ligne 85: Ligne 117:
 [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 123: Ligne 155:
 systemctl enable syncthing@Milou.service systemctl enable syncthing@Milou.service
 </​code>​ </​code>​
 +**Qu'​est ce qu'un timer--
 +
 +Les timers sont des fichiers de programmation qui vont se charger de lancer des services à intervalles réguliers.
 +
 +Quand vous créez un timer, il doit avoir l'​extension .timer. Un service .service du même nom doit exister. (le service est souvent un service minimaliste,​ de type oneshot, permettant de lancer une commande)
 +
 +Les timers «pourraient presque» remplacer le planificateur de tâches cron.
 +
 ==== Exemple de service cyclique. ==== ==== Exemple de service cyclique. ====
-Création du fichier de gestion ​ =>       /​etc/​systemd/​system/​MAJ0.timer        +Création du fichier de timer
 <file sh /​etc/​systemd/​system/​MAJ0.timer>​ <file sh /​etc/​systemd/​system/​MAJ0.timer>​
 [Unit] [Unit]
-Description=effectue ​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
 # 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
-###    voir toutes les possibilités de choix  dans ce  document ​http://​man7.org/​linux/​man-pages/​man7/​systemd.time.7.html+###    voir toutes les possibilités de choix  dans ce  document ​https://​man7.org/​linux/​man-pages/​man7/​systemd.time.7.html
 [Install] [Install]
 WantedBy=timers.target WantedBy=timers.target
 +</​file>​
 +Création du fichier de service
 +<file sh /​etc/​systemd/​system/​MAJ0.service>​
 +[Unit]
 +Description=Service de mise a jour
 +After=network.target
 +
 [Service] [Service]
-User=XXXXXXXXX ​ # à renseigner ? root par défaut. +ExecStart=apt-get update && ​apt-get upgrade 
-Group=users +Type=oneshot 
-ExecStart=/​etc/​init.d/​MAJ0</​file>​ +</​file>​
-Création du fichier contenant ce qu'il faut faire dans cet exemple +
-<file bash /​etc/​init.d/​MAJ0>​ +
-#! /bin/sh +
-date >/​var/​log/​MAJ0.log +
-echo "Faire les mises à jour" >>/​var/​log/​MAJ0.log +
-sudo apt install tototo ​ >>/​var/​log/​MAJ0.log +
-sudo apt autoremove +
-echo  "Pas encore trouvé pour informer l'​utilisateur de la proposition d'​épuration. Donc rien n'est épuré"​ >>/​var/​log/​MAJ0.log +
-exit 0 </​file>​+
 Avec les commandes de gestion associées Avec les commandes de gestion associées
-<​code>​sudo systemctl start  MAJ0.timer+<​code>​sudo systemctl enable MAJ0.timer  
 +sudo systemctl start  MAJ0.timer
 sudo systemctl status MAJ0.timer sudo systemctl status MAJ0.timer
-sudo systemctl stop   ​MAJ0.timer +</​code>​
-sudo systemctl daemon-reload  +
-sudo systemctl enable MAJ0.timer ​</​code>​+
  
 ====Exemple de service avancé avec la base graphe neo4j==== ====Exemple de service avancé avec la base graphe neo4j====
Ligne 174: Ligne 212:
  
 # 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 192: Ligne 230:
 #​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 203: Ligne 241:
 RuntimeDirectory=neo4j RuntimeDirectory=neo4j
  
-#Droits d'​accès sur le réperoitre ​/run/neo4j.+#Droits d'​accès sur le répertoire ​/run/neo4j.
 # Utilisateur ​ Groupe ​   Les_autres # Utilisateur ​ Groupe ​   Les_autres
 #     ​rwx ​       rwx        --- #     ​rwx ​       rwx        ---
Ligne 221: Ligne 259:
 ExecReload=/​usr/​bin/​neo4j restart ExecReload=/​usr/​bin/​neo4j restart
  
-#Ne doit pas considérer que le service est actif lorsque le processus neo4j c'est terminé normalement.+#Ne doit pas considérer que le service est actif lorsque le processus neo4j s'est terminé normalement.
 RemainAfterExit=no RemainAfterExit=no
  
Ligne 241: Ligne 279:
 #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
Ligne 260: Ligne 298:
 ===== Ressources ====== ===== Ressources ======
   * [[wpfr>​systemd|systemd]] sur Wikipedia en français   * [[wpfr>​systemd|systemd]] sur Wikipedia en français
-  * [[http://​www.freedesktop.org/​wiki/​Software/​systemd/​|Site officiel de systemd]] +  * [[https://​www.freedesktop.org/​wiki/​Software/​systemd/​|Site officiel de systemd]] 
-  * [[http://​doc.fedora-fr.org/​wiki/​Systemd|Fedora et systemd]] notamment pour la partie [[#Type de service systemd]]+  * [[https://​doc.fedora-fr.org/​wiki/​Systemd|Fedora et systemd]] notamment pour la partie [[#Type de service systemd]]
   * [[https://​docs.syncthing.net/​users/​autostart.html#​using-systemd|Documentation de Syncthing]] Créer un service systemd pour lancer Syncthing au démarrage (en anglais)   * [[https://​docs.syncthing.net/​users/​autostart.html#​using-systemd|Documentation de Syncthing]] Créer un service systemd pour lancer Syncthing au démarrage (en anglais)
-  * [[http://dev.deluge-torrent.org/wiki/UserGuide/Service/​systemd|Documentation de Deluge]] Créer un service systemd pour lancer Deluge au démarrage (en anglais)+  * [[https://deluge.readthedocs.io/en/latest/how-to/systemd-service.html|Documentation de Deluge]] Créer un service systemd pour lancer Deluge au démarrage (en anglais)
  
  
 ---- ----
 //​Contributeurs:​ [[:​utilisateurs:​zarmu]]//​ //​Contributeurs:​ [[:​utilisateurs:​zarmu]]//​
  • creer_un_service_avec_systemd.1536670010.txt.gz
  • Dernière modification: Le 11/09/2018, 14:46
  • par 109.26.134.132