encore une fois c'est systemd la solution. /etc/rc, init, cron, etc tout ca c'est dans systemd maintenant.
c'est étonnant et inconséquent de la part de speedtest de ne pas fournit une install propre pour systemd (franchement aller mentionner rc.local c'est de la fainéantise de leur part).
y'a tout ce qu'il faut dans systemd pour lancer un service 'speedtest', le relancer s'il plante , l'arreter proprement au shutdown de la machine.
créer le fichier suivant: /etc/systemd/system/speedtest.service
avec dedans:
[Unit]
Description=service speedtest Ookla
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/full_path_to_your_Ookla_Server_Daemon/OoklaServer --daemon
Restart=always
RestartSec=15
User=monuser
[Install]
WantedBy=multi-user.target
quelques explications:
- La Type=simple indique est le programme a lancer est un executable (ligne ExecStart) qui tourne et ne s'arrete pas.
Si "OoklaServer --daemon" fork un process et rend la main il faut mettre "ExecStart=forking" et tracker le PID du process dans une option "PIDFile="
- la ligne "User=" est optionnelle et défini le compte utilisateur qui sera utilisé pour faire tourner le service. si tu veux pas que ce soit root.
- RestartSec est le delai en seconde a attendre avant de redémarrer le service
- Restart=always va redemarrer le service s'il est down
- Lors d'un shutdown , systemd va arrêter le service en envoyant un signal d'arret (personalisable). Si cela ne suffit pas a l’arrêter correctement voir
https://www.freedesktop.org/software/systemd/man/systemd.kill.htmlPour installer le service:
sudo systemctl daemon-reload // à faire toutle temps apres une ajout/modif d'un fichier systemd
sudo systemctl enable speedtest.service // ce activera le service au boot
pour démarrer a la main:
sudo systemctl start speedtest.service // le .service peut être omis si y'a pas d’ambiguïté avec autre chose
pour voir l'état :
sudo systemctl status speedtest.service pour arreter:
sudo systemctl stop speedtest.servicepour voir le journal concernant ce service depuis le démarrage en cours:
sudo journalctl -b -u speedtest.service // penser 'u' = unit
pour désactiver le service:
sudo systemctl disable speedtest.servicepour finir je conseille fortement de lire:
https://www.freedesktop.org/software/systemd/man/systemd.service.html et la doc de systemd en général.