Documentation systemd fichier service

Bonjour,

J’ai un service que je dois reécriore car je pense qu’il n’est plus à jour au regard de la version actuelle de systemd:

[Unit]
Description=Exports USB device over IP
Requires=network-online.target
After=network-online.target

[Service]
Type=simple
Restart=on-failure
User=root
Group=root
ExecStart=/usr/sbin/usbipd 
ExecStartPost=/usr/sbin/usbip bind --busid=1-2
ExecStop=/usr/sbin/usbip unbind --busid=1-2

[Install]
WantedBy=multi-user.target

Normallement c’est sensé faire en sorte que le port USB 1-2 soit partagé sur le rféseau via usbipd.
Cependant, le redémarrage sur failure se fait trop rapidement et génère une erreur.
De ce fait, le service doit faire en sorte que si celui-ci est arrêté il doit systématiquement être redémarré.
Il doit essayer disons 3 fois, sinon il attend 40 sec et il recommence.

Tu devrais pouvoir le faire avec

StartLimitIntervalSec=interval & StartLimitBurst=burst

en cas de besoin supplémentaire tu peux aussi ajouter un sleep devant ta cde de start.

Donc je devrais avoir?

[Unit]
Description=Exports USB device over IP
Requires=network-online.target
After=network-online.target
StartLimitIntervalSec=40
StartLimitBurst=3

[Service]
Type=simple
Restart=on-failure
User=root
Group=root
ExecStart=/usr/sbin/usbipd 
ExecStartPost=/usr/sbin/usbip bind --busid=1-2
ExecStop=/usr/sbin/usbip unbind --busid=1-2

[Install]
WantedBy=multi-user.target

Et sinon, où trouve-t-on la documentation complète?

https://www.man7.org/linux/man-pages/man5/systemd.unit.5.html

Je crois (à vérifier) que les 2 cdes doivent se mettre dans la section service et pas unit.

1 J'aime

C’est bien dans la unit :slight_smile:
Merci, je teste et je reviendrais vous dire.
mais pas tout de suite, là je fais une pause et un petit Sniper 5 :slight_smile:

C’est bien dans unit mais ce n’est pas bon quand même.
Je n’ai pas du bien comprendre les options.
Il faut que je creuse :slight_smile:

Si tu utilises syncthing, tu as un exemple

cat /lib/systemd/system/syncthing@.service

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
StartLimitIntervalSec=60
StartLimitBurst=4

[Service]
User=%i
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target