Vous n'êtes pas connecté - Connexion ou Créer un compte

Classée dans Questions > Questions / Réponses

Linux — Afficher une notification régulière avec crontab

Administrateur
Une annonce aurait pu être ici :'(

En consultant l'excellent blog de Korben, aujourd'hui, je suis tombé sur un article qui parle de l'application OSX nommée Stand. Cette application permet d'afficher de façon régulière des rappels vous invitant à marcher un peu. Cela est bon pour la santé si vous avez une activité assise. Korben y expose une solution alternative à base d'Automator et de Cronnix. N'étant pas utilisateur de l'OS en question, l'envie m'a pris de faire ma version pour Ubuntu. C'est ce que je compte vous présenter.

Création du script de notification

Pour afficher une notification, j'ai trouvé la commande notify-send. Cette dernière permet l'affichage d'une bulle de notification, de cette façon c'est très propre.

Installation

sudo apt-get install libnotify-bin

Utilisation

Notification simple :

notify-send "Titre" "Message"

Indiquer un niveau de criticité (option -u) :

notify-send "Titre" "Message" -u critical

Les valeurs possibles sont : low, normal et critical

Indiquer une durée d'affichage en millisecondes (option -t) :

notify-send "Titre" "Message" -t 5000

À présent, que nous avons la commande en main, nous créons un script Shell :

#!/bin/bash

TITLE="Un peu de marche !"
MESSAGE="Pour votre santé, ne restez pas en position assise trop longtemps."

notify-send "$TITLE" "$MESSAGE" -i ~/Documents/icons/famfamfam_silk_icons_v013/icons/information.png -t 30000

Vous pouvez personnaliser ce script à loisir.

Définition de la de la tâche planifiée

Pour la tâche planifier, l'utilisation de crontab s'impose. Au cas où vous ne le connaîtriez pas, il s'agit de l'outil de planification intégré à toutes les versions de Linux, et plus généralement Unix.

Nous décidons de lancer cette tâche toutes les heures, du lundi au vendredi. Pour cela, nous appelons la commande :

crontab -e

Cela a pour effet d'ouvrir dans l'éditeur, définit à la base, le fichier de configuration des tâches planifiées pour l'utilisateur courant. Nous ajoutons une nouvelle ligne qui exécutera note script :

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)
    30     9-17        *               *               Mon-Fri         env DISPLAY=:0.0 sh chemin/vers/script.sh

Après avoir enregistré et quitté l'éditeur, crontab prend directement en compte les modifications sans nécessiter de redémarrage de service ou daemon.

La partie env DISPLAY=:0.0 permet d'indiquer à crontab que l'on fonctionne en environnement graphique et que l'on souhaite afficher sur le premier écran, soit l'écran par défaut.

Notre script sera exécuté toutes les heures de 9 H à 17 H à la 30e minute, soit 9 H 30, 10 H 30, ... 17 H 30, du lundi au vendredi.

Vous pouvez vérifier que les appels se font bien aux heures indiquées avec la commande suivante :

tail -f /var/log/syslog | grep -i cron

Il n'est plus possible de répondre à cette question car elle marquée comme résolue.