technique:systemd

Systemd

Créer un service systemd : Dans /etc/systemd/system : service_name.service.

[Unit]
Description=My Daemon
After=network.target

[Service]
User=root
WorkingDirectory=/srv/mgreport/mailgunreport/
Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6" # ici 3 variables définies VAR1, VAR2, VAR3
ExecStart=/bin/myforegroundcmd
Restart=always

[Install]
WantedBy=multi-user.target

Rendre le service actif au démarrage :

systemctl enable service_name.service

Si le service est modifié :

systemctl daemon-reload

Et le relancer et voir son statut

systemctl restart mgreport.service

systemctl status mgreport.service

Créer un timer pour le même service : monservice.timer

[Unit]
Description=Run foo weekly

[Timer]
OnCalendar=weekly # ou  OnCalendar=Mon..Fri 22:30 ou  OnBootSec=15min
Persistent=true

[Install]
WantedBy=timers.target

Rendre le timer actif avec :

systemctl enable monservice.timer

Et le tester avec

systemctl start monservice.timer

Et lister les timer avec :

systemctl list-timers

On peut ajouter des variables d'environnement au Exec avec :

[Service]
Environment="FOO=bar baz"

Ou bien en définissant un fichier externe comme dans le script “mailgunreport” :

[Service]
EnvironmentFile=/srv/mgreport/mailgunreport/.env.systemd

et .env.systemd :

SECRETHTTPWEBHOOK=ijuqsmkdfjmlkjzdfsqf1857561321
APIKEY=mljsmqljkmljkqsdf5f154321
MAILFROM=mail1@cemea.asso.fr
MAILADMIN=mail2@cemea.asso.fr

Voir doc Archlinux : https://wiki.archlinux.org/index.php/Systemd/Timers

  • technique/systemd.txt
  • Dernière modification : 2020/09/22 23:22
  • de francoisa