web-dev-qa-db-fra.com

Écriture des fichiers de service systemd de base

Je développe une application Nodejs avec laquelle l'utilisateur interagit via HTTP sur localhost. Il n'y a pratiquement pas de paramètres et le démon n'a pratiquement pas de dépendances et il doit juste être opérationnel au moment de la connexion.

Je voudrais suivre les idiomes sur chaque plate-forme pour les scripts de démarrage, et cela signifie Upstart sur Ubuntu et systemd sur Fedora.

  • Existe-t-il de bons tutoriels pour écrire des fichiers système systemd?
  • Existe-t-il des "meilleures pratiques" à connaître?

J'ai trouvé ces ressources:

Je recherche principalement une sorte d'API comme référence, ainsi qu'un format de base à suivre.

106
beatgammit

Je commencerais par les pages de manuel de Systemd . Ils représentent une ressource complète du système et des services.

Il y a aussi les FAQ freedesktop Systemd .

26
jasonwryan

L'exemple suivant est inspiré de ce lien, qui en fait ne mentionne pas toutes les étapes et est répertorié juste pour créditer la source: http://patrakov.blogspot.com/2011/01/writing-systemd-service-files .html

Étape 1 : J'ai créé ce fichier (emplacement de la note) qui déclenche essentiellement un processus bash avec un argument étendu. Vous pouvez lancer votre propre commande qui peut être différente de bash.

[root@y500-Fedora ~]# cat /etc/systemd/system/foo.service 
[Unit]
Description=foo

[Service]
ExecStart=/bin/bash -c "while true; do /bin/inotifywait -qq --event close_write /sys/class/backlight/acpi_video0/brightness; su myusername -c '/bin/xbacklight -display :0 -set $(cat /sys/class/backlight/acpi_video0/brightness)'; done"

[Install]
WantedBy=multi-user.target

Étape 2 :

Recharger systemd:

systemctl daemon-reload

Démarrez le nouveau service:

systemctl enable foo

(de même, vous pouvez disable it)

(facultatif) Étape 3 : il devrait démarrer automatiquement au prochain redémarrage en mode multi-utilisateur (niveau d'exécution 3) mais si vous voulez le démarrer immédiatement :

systemctl start foo
systemctl status foo # optional, just to verify

Mise à jour: Pour être complet, je dois ajouter que ubuntu bionic semble avoir une page de manuel très complète. RTFM ici

184
necromancer
4
caracal