j'aimerais savoir lorsqu'une nouvelle version beta du logiciel geogebra (en version beta) sort. Pour cela j'ai écrit un script (
geogebra.sh
) qui me donne la dernière version et j'aimerais recevoir des notifications lorsqu'une nouvelle version est sortie (pas trouvé de flux rss, ni de mailing list). Je vais expliquer ma méthode, n'hésitez pas à me dire s'il y a plus simple. J'ai vu que systemd inclus un système semblable à anacron et cron. J'aimerais recevoir chaque jour une notification et si la machine était éteinte au moment de l'envoi de la notification, j'aimerais qu'elle soit envoyée lors de la prochaine utilisation. Pour tester si tout fonctionne, je me contente maintenant d'une tâche semblable à cron, on passera à anacron après. J'utilise la commande suivante pour envoyer la notification:
Code : Tout sélectionner
$ notify-send "Nouvelle version de geogebra:\n $file"
$file
contient le nom du nouvel installeur. Je donnerai le contenu des fichiers que j'ai créé après, je donne à présent juste un aperçu. En suivant le wiki, j'ai créé les fichiers: timer-hourly.target, timer-hourly.timer et geogebra.service. C'est le service geogebra-service qui doit m'envoyer la notification. Toutefois, lorsque le service est démarré, ça ne fonctionne pas. J'ai tout d'abord remarqué que systemd ne peux pas exécuter des scripts, il faut lui donner la commande du shell et en argument le script à exécuter. Ca ça doit être bon. A mon avis le problème est le suivant: le service se lance en tant que root. Et si en tant que root j'exécuteCode : Tout sélectionner
$ notify-send "Nouvelle version de geogebra:\n $file"
geogebra.service
:Code : Tout sélectionner
ExecStart=su user -c "/usr/bin/notify-send \"Nouvelle version de geogebra:...\""
Code : Tout sélectionner
Jul 01 15:00:17 bibine systemd[1]: Starting Geogebra notification...
Jul 01 15:00:17 bibine systemd[1]: Started Geogebra notification.
Jul 01 15:00:17 bibine systemd[1]: Starting Hourly Timer Target.
Jul 01 15:00:17 bibine systemd[1]: Reached target Hourly Timer Target.
Jul 01 15:00:17 bibine systemd[1]: Service timer-hourly.target is not needed anymore. Stopping.
Jul 01 15:00:17 bibine systemd[1]: Stopping Hourly Timer Target.
Jul 01 15:00:17 bibine systemd[1]: Stopped target Hourly Timer Target.
Jul 01 15:00:17 bibine systemd[17823]: Failed at step USER spawning /usr/bin/notify-send: No such process
Jul 01 15:00:17 bibine systemd[1]: geogebra.service: main process exited, code=exited, status=217/USER
Code : Tout sélectionner
[Service]
User=user # Add a user if you wish the service to be executes as a particular user, else delete this line
#Type= # Simple by default, change it if you know what you are doing, else delete this line
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
Merci!
Fichier timer-hourly.target:
Code : Tout sélectionner
[Unit]
Description=Hourly Timer Target
StopWhenUnneeded=yes
Code : Tout sélectionner
[Unit]
Description=Hourly Timer
[Timer]
OnBootSec=5min
OnCalendar=hourly
Unit=timer-hourly.target
[Install]
WantedBy=basic.target
Code : Tout sélectionner
[Unit]
Description=Geogebra notification
Wants=timer-hourly.timer
[Service]
User=user # Add a user if you wish the service to be executes as a particular user, else delete this line
#Type= # Simple by default, change it if you know what you are doing, else delete this line
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart=/usr/bin/sh -c "/home/user/geogebra.sh"
[Install]
WantedBy=timer-hourly.target