Mode d’emploi
- Saisissez le nom du service, la commande avec son chemin complet et le répertoire de travail.
- Définissez l’utilisateur, la politique de redémarrage et les variables d’environnement éventuelles.
- Ajoutez si vous le souhaitez un durcissement de base ou un calendrier (OnCalendar) pour créer un timer.
- Copiez les fichiers générés, ou collez les commandes d’installation dans un shell root sur le serveur.
Explication des options
- Type
- simple convient aux programmes qui restent au premier plan ; oneshot convient aux scripts exécutés une seule fois, comme les tâches planifiées.
- Restart
- En cas d’échec relance le service lorsqu’il se termine sur une erreur ou plante ; Toujours le relance aussi après une sortie normale.
- OnCalendar
- Quand le timer se déclenche, p. ex. daily ou *-*-* 03:00:00 pour 3 h du matin tous les jours. Testez les expressions avec systemd-analyze calendar.
Exemple : une tâche nocturne sous forme de timer
Pour exécuter un script chaque nuit à 3 h, réglez la Commande (ExecStart) sur /usr/local/bin/backup.sh, le nom du service sur backup, Type sur oneshot et Restart sur Jamais, puis cochez « Exécuter selon un calendrier (créer un .timer) » et « Durcissement de base ». Avec l’utilisateur et le répertoire de travail par défaut, le générateur produit deux fichiers. backup.service :
[Unit]
Description=Nightly backup
[Service]
Type=oneshot
User=www-data
WorkingDirectory=/srv/myapp
ExecStart=/usr/local/bin/backup.sh
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=read-only
et backup.timer :
[Unit]
Description=Run backup on a schedule
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
Unit=backup.service
[Install]
WantedBy=timers.target
Deux choses changent quand un timer est activé. Le fichier de service perd sa section [Install], car c’est le timer qui le démarre, et les commandes d’installation activent le timer plutôt que le service :
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers backup.timer
journalctl -u backup.service -f
Le Type n’est pas modifié à votre place quand vous cochez l’option du timer : choisissez donc oneshot vous-même pour les tâches qui se terminent. Un service oneshot combiné à Restart Toujours n’est pas valide, si bien que le générateur omet Restart et affiche un avertissement.
Questions fréquentes
Où placer le fichier ?
Dans /etc/systemd/system/. Exécutez ensuite systemctl daemon-reload puis systemctl enable --now <name>.service — les commandes générées font tout cela.
Pourquoi mon service échoue-t-il avec « Executable path is not absolute » ?
Les anciennes versions de systemd exigent le chemin complet du programme dans ExecStart. Trouvez-le avec which, p. ex. which node.
Timer ou cron ?
Les timers écrivent dans le journal, peuvent rattraper les exécutions manquées pendant que le serveur était éteint et ne s’exécutent jamais deux fois en même temps. cron est plus simple pour une commande d’une ligne et fonctionne toujours très bien.
Confidentialité
Cet outil fonctionne entièrement dans votre navigateur. Vos fichiers et vos textes sont traités sur votre appareil et ne sont jamais envoyés à nos serveurs.