Services Linux
Interagir avec les services
systemctl affiche réellement tous les services, à la différence de service.
sudo systemctl list-units sudo systemctl status service_name.service sudo systemctl restart service_name.service
Créer un service
- /etc/systemd/system/gunicorn.service
[Unit] Description=Launch gunicorn to run web plateform [Service] Type=simple User=root ExecStart=/home/user/start_gunicorn.sh Restart=on-failure [Install] WantedBy=multi-user.target
L'exécutable de ExecStart doit être un chemin absolu (python3 ne suffit pas !).
Enregistrer le service:
sudo systemctl enable gunicorn.service
Voir le statut du service:
sudo service gunicorn status
Redémarrer le service:
sudo service gunicorn restart
Ce genre de service n'apparaît pas dans le résultat de la commande service –status-all, car cette commande ne renvoie que les services qui ont un script init.d.
Après modification d'un service, exécuter la commande:
sudo systemctl daemon-reload
Et redémarrer le service.
Logs des services
Dépendances
Le service B a besoin du service A. Le démarrage du service B provoque donc le démarrage du service A. Dans le fichier du service B:
[Unit] Description=... Wants=service-a.service
Timers
Système équivalents aux crons.
Tout se trouve dans /etc/systemd/system/.
Lister tous les timers:
systemctl list-timers
Arrêter un timer:
systemctl stop certbot.timer
Désactiver un timer (ne se relancera pas aux prochains redémarrages):
systemctl disable certbot.timer
Surcharger un service
sudo systemctl edit <service>
Là, réécrire le fichier de service, en ne laissant que les valeurs modifiées (il faut qu'il y ait les [Service]).
Modifier le timeout de démarrage d'un service
Par défaut, un service doit démarrer en moins de 90 secondes.
Il est possible de changer cette valeur :
[Service] TimeoutStartSec=180
sudo systemctl show elasticsearch | grep ^Timeout