tech:systemd_service_-_exemples
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| tech:systemd_service_-_exemples [2026/04/04 14:15] – Jean-Baptiste | tech:systemd_service_-_exemples [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # SystemD service - exemples | ||
| + | |||
| + | Voir aussi : | ||
| + | * [[SystemD service script en boucle infinie respawn]] | ||
| + | * [[Notes Etherpad|Etherpad Démarrage automatique avec SystemD]] | ||
| + | * [[RedHat accès / | ||
| + | * [[pb_podman_-_podman_system_migrate|Pb podman - podman system migrate - script_palliatif]] | ||
| + | * [Les différents types de service SystemD](https:// | ||
| + | |||
| + | Voir : | ||
| + | * [[Notes Linux capabilities sécurité caps capsh setcap]] | ||
| + | |||
| + | |||
| + | ## Diagnostic d'un service | ||
| + | |||
| + | Source : [[https:// | ||
| + | |||
| + | Si un service systemd se comporte mal ou si vous souhaitez obtenir plus d' | ||
| + | |||
| + | Ajoutez un [Fichiers de substitution](https:// | ||
| + | |||
| + | ~~~ini | ||
| + | [Service] | ||
| + | Environment=SYSTEMD_LOG_LEVEL=debug | ||
| + | ~~~ | ||
| + | |||
| + | Ou comme équivalent, | ||
| + | ~~~ | ||
| + | # SYSTEMD_LOG_LEVEL=debug / | ||
| + | ~~~ | ||
| + | |||
| + | puis redémarrer systemd-networkd et regarder le journal du service avec l' | ||
| + | |||
| + | ## Exemple conf | ||
| + | |||
| + | |||
| + | ### Exemple conf proxy | ||
| + | |||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Service] | ||
| + | # Environment=" | ||
| + | Environment=" | ||
| + | |||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | systemctl daemon-reload | ||
| + | systemctl show --property=Environment docker | ||
| + | systemctl restart docker | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Désactiver un service si un fichier est présent | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | # don't run timesyncd if we have another NTP daemon installed | ||
| + | # | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Arguments utiles | ||
| + | |||
| + | ~~~ini | ||
| + | Environment=NODE_ENV=production | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | ### Command systemd-run | ||
| + | |||
| + | https:// | ||
| + | ~~~bash | ||
| + | # | ||
| + | systemd-run --on-active=10 /bin/bash -c "echo ' | ||
| + | ~~~ | ||
| + | |||
| + | https:// | ||
| + | ~~~bash | ||
| + | systemd-run --on-active=" | ||
| + | ~~~ | ||
| + | |||
| + | https:// | ||
| + | ~~~bash | ||
| + | systemd-run -p BlockIOWeight=10 updatedb | ||
| + | systemd-run --on-active=30 --timer-property=AccuracySec=100ms /bin/touch /tmp/foo | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Exemple | ||
| + | |||
| + | ### Exemple 1 | ||
| + | |||
| + | Source : https:// | ||
| + | |||
| + | ~~~bash | ||
| + | touch / | ||
| + | chmod 664 / | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | vi / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=Confluence | ||
| + | After=network.target | ||
| + | |||
| + | [Service] | ||
| + | Type=forking | ||
| + | User=confluence | ||
| + | PIDFile=/ | ||
| + | ExecStart=/ | ||
| + | ExecStop=/ | ||
| + | TimeoutSec=200 | ||
| + | LimitNOFILE=2048 | ||
| + | LimitNPROC=2048 | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | Vérif syntax | ||
| + | |||
| + | ~~~bash | ||
| + | systemd-analyze verify / | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | systemctl daemon-reload | ||
| + | systemctl enable confluence.service | ||
| + | systemctl start confluence.service | ||
| + | systemctl status confluence.service | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Exemple 2 | ||
| + | |||
| + | https:// | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=WDIDLE3 | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | ExecStart=/ | ||
| + | TimeoutSec=0 | ||
| + | StandardInput=tty | ||
| + | RemainAfterExit=yes | ||
| + | UMask=006 | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Exemple 3 | ||
| + | |||
| + | Source : https:// | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=Sleep service | ||
| + | ConditionPathExists=/ | ||
| + | After=network.target | ||
| + | |||
| + | [Service] | ||
| + | Type=simple | ||
| + | User=sleepservice | ||
| + | Group=sleepservice | ||
| + | LimitNOFILE=1024 | ||
| + | |||
| + | Restart=on-failure | ||
| + | RestartSec=10 | ||
| + | startLimitIntervalSec=60 | ||
| + | |||
| + | WorkingDirectory=/ | ||
| + | ExecStart=/ | ||
| + | |||
| + | # make sure log directory exists and owned by syslog | ||
| + | PermissionsStartOnly=true | ||
| + | ExecStartPre=/ | ||
| + | ExecStartPre=/ | ||
| + | ExecStartPre=/ | ||
| + | StandardOutput=syslog | ||
| + | StandardError=syslog | ||
| + | SyslogIdentifier=sleepservice | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | ### Exemple 4 - SystemD appelant un script sysV init | ||
| + | |||
| + | Exemple avec SonarQube | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=Sonar 6 | ||
| + | After=network.target network-online.target | ||
| + | Wants=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | ExecStart=/ | ||
| + | ExecStop=/ | ||
| + | ExecReload=/ | ||
| + | PIDFile=/ | ||
| + | Type=forking | ||
| + | User=sonar | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Exemple Jenkins slave agent | ||
| + | |||
| + | |||
| + | `Jenkins-agent.service` | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=Jenkins Service | ||
| + | Wants=network.target | ||
| + | After=network.target | ||
| + | |||
| + | [Service] | ||
| + | ExecStart=/ | ||
| + | User=user1 | ||
| + | Restart=always | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Exemple Postgres | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=postgresql_plop_rct_service | ||
| + | After=network.target | ||
| + | AssertPathExists=!/ | ||
| + | |||
| + | [Service] | ||
| + | Type=forking | ||
| + | User=postgres | ||
| + | |||
| + | #Disable OOM kill on postmaster | ||
| + | OOMScoreAdjust=-1000 | ||
| + | Environment=PG_OOM_ADJUST_FILE=/ | ||
| + | Environment=PG_OOM_ADJUST_VALUE=0 | ||
| + | |||
| + | WorkingDirectory=/ | ||
| + | ExecStart=/ | ||
| + | ExecStop=/ | ||
| + | ExecReload=/ | ||
| + | Restart=on-abort | ||
| + | KillMode=mixed | ||
| + | KillSignal=SIGINT | ||
| + | TimeoutSec=0 | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Exemple AAP - Tirer des dépendances seulement | ||
| + | |||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=Automation Controller service | ||
| + | After=network.target redis.service | ||
| + | Wants=redis.service | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | RemainAfterExit=true | ||
| + | ExecStart=/ | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Exemple iptables-service de RedHat | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=IPv4 firewall with iptables | ||
| + | After=syslog.target | ||
| + | AssertPathExists=/ | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | RemainAfterExit=yes | ||
| + | ExecStart=/ | ||
| + | ExecReload=/ | ||
| + | ExecStop=/ | ||
| + | Environment=BOOTUP=serial | ||
| + | Environment=CONSOLETYPE=serial | ||
| + | StandardOutput=syslog | ||
| + | StandardError=syslog | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=basic.target | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | `/ | ||
| + | ~~~bash | ||
| + | #!/bin/bash | ||
| + | # | ||
| + | # iptables | ||
| + | # | ||
| + | # chkconfig: 2345 08 92 | ||
| + | # description: | ||
| + | # | ||
| + | # config: / | ||
| + | # config: / | ||
| + | # | ||
| + | ### BEGIN INIT INFO | ||
| + | # Provides: iptables | ||
| + | # Required-Start: | ||
| + | # Required-Stop: | ||
| + | # Default-Start: | ||
| + | # Default-Stop: | ||
| + | # Short-Description: | ||
| + | # Description: | ||
| + | ### END INIT INFO | ||
| + | |||
| + | # Source function library. | ||
| + | . / | ||
| + | |||
| + | # | ||
| + | |||
| + | case " | ||
| + | start) | ||
| + | [ -f " | ||
| + | start | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | stop) | ||
| + | [ " | ||
| + | stop | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | restart|force-reload) | ||
| + | restart | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | reload) | ||
| + | [ -e " | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | condrestart|try-restart) | ||
| + | [ ! -e " | ||
| + | restart | ||
| + | restart | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | status) | ||
| + | status | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | panic) | ||
| + | set_policy DROP | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | save) | ||
| + | save | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | *) | ||
| + | echo $" | ||
| + | RETVAL=2 | ||
| + | ;; | ||
| + | esac | ||
| + | |||
| + | exit $RETVAL | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Exemple Nagios | ||
| + | |||
| + | `nagios4.service` | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=nagios4 | ||
| + | Documentation=man: | ||
| + | |||
| + | [Service] | ||
| + | Environment=NAGIOSCFG="/ | ||
| + | EnvironmentFile=/ | ||
| + | ExecStartPre=sh -c ' | ||
| + | ExecStart=/ | ||
| + | ExecStopPost=sh -c ' | ||
| + | ExecReload=/ | ||
| + | KillMode=mixed | ||
| + | PIDFile=/ | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Exemple Podman | ||
| + | |||
| + | `/ | ||
| + | ~~~ini | ||
| + | [Unit] | ||
| + | Description=Podman API Service | ||
| + | Requires=podman.socket | ||
| + | After=podman.socket | ||
| + | Documentation=man: | ||
| + | StartLimitIntervalSec=0 | ||
| + | |||
| + | [Service] | ||
| + | Type=exec | ||
| + | KillMode=process | ||
| + | Environment=LOGGING=" | ||
| + | ExecStart=/ | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | systemctl --user daemon-reload | ||
| + | systemctl restart --user podman.socket | ||
| + | ~~~ | ||
| + | |||
| + | Source : https:// | ||
| + | |||
