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
Variables d'environnement
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