On défini toutes ces commandes dans la crontab.
Prérequis à tout ceci que le raspberrypi connaisse la date et l'heure précisément, en effet le RaspberryPi n'a pas d'horloge interne, il faut donc lui apprendre a se mettre à l'heure via internet (NTP) soit pour les projets nomades (ce qui n'est pas notre cas ici) par le biais de l'ajout d'un composant électronique qui lui donnera la date et l'heure.
Allons y.
sudo apt-get update
sudo apt-get upgrade
Vérifion déja si le service n'est pas déja installé :
ps aux | grep ntp
J'obtiens :
pi@gladys:~ $ ps aux | grep ntp
ntp 438 0.0 0.8 5652 3760 ? Ss Jan12 0:15 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 107:112
pi 26019 0.0 0.4 4256 2056 pts/0 S+ 09:43 0:00 grep --color=auto ntp
Le service ntp semble opérationnel.Ensuite je lance la commande "date"
pi@gladys:~ $ date
Tue 12 Jan 19:43:29 UTC 2016
La date est bonne mais l'heure retarde d'une heure, je sais pourquoi.
Je n'ai pas configuré le fuseau horaire.
pi@gladys:~ $ sudo raspi-config
Current default time zone: 'Europe/Paris'
Local time is now: Tue Jan 12 20:43:46 CET 2016.
Universal Time is now: Tue Jan 12 19:43:46 UTC 2016.
Voilà raspi-config a réglé le problème
pi@gladys:~ $ date
Tue 12 Jan 20:44:17 UTC 2016
Si ntp n'est pas fonctionnel :
Installation de ntp:
sudo apt-get install ntp
Lancement du service
sudo /etc/init.d/ntp start
Configuration:
sudo nano /etc/ntp.com
mettre un serveur fr
server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org
"CTRLX" puis à la demande de nano "O"
vérifier la synchronisation:
ntpq -p
Maintenant que le RaspberryPi est à l'heure, on peut se lancer dans la crontab.
Il y a deux commandes qui von nous servir, crontab -l et crontab -e
La première nous montre le contenu de la crontab
La seconde ouvre la crontab dans l'editeur texte défini par déffaut, nano sur le raspberry pi.
Avant de se lancer dans ces modifications j'effectue une sauvegarde de la crontab existante.
sudo cp crontab crontab_originale
maintenant c'est parti pour quelques exemples.
sudo crontab -e
si c'est la première utilisation il va nous demander quel éditeut on veut utiliser.
pi@gladys:~ $ crontab -e
no crontab for pi - using an empty one
/usr/bin/select-editor: 1: /usr/bin/select-editor: gettext: not found
'select-editor'.
1. /bin/ed
/usr/bin/select-editor: 1: /usr/bin/select-editor: gettext: not found
2. /bin/nano <----
3. /usr/bin/vim.tiny
/usr/bin/select-editor: 32: /usr/bin/select-editor: gettext: not found
1-3 [2]: 2 Je renseigne ici "2" pour utiliser nano
No modification made
Puis il lance nano avec la crontab vierge :
Je me rends sur la dernière ligne avec les flèches du clavier.
Toutes les lignes qui commencent par # sont commentées c'est à dire que la crontab ne les prendra pas en compte.
Je commente d'abord l'action que je veut faire réaliser régulièrement à la crontab, ça me permettra quand j'y reviendrais de retrouver ce que j'avais voulu faire faire
Je souhaite que la crontab me donne la date et l'heure toutes les 1 minutes et l'enregistre de façon datée dans un fichier texte
#enregistrer dans le fichier /home/pi/du.txt la date et l'heure toutes les 1 minutes
Maintenant il faut que je dise à cron quand il faut qu'il le fasse, c'est le début de la ligne de la forme :
mm hh jj MMM JJJ
- mm représente les minutes (de 0 à 59)
- hh représente l'heure (de 0 à 23)
- jj représente le numéro du jour du mois (de 1 à 31)
- MMM représente l'abréviation du nom du mois (jan, feb, ...) ou bien le numéro du mois (de 1 à 12)
- JJJ représente l'abréviation du nom du jour ou bien le numéro du jour dans la semaine :
- 0 = Dimanche
- 1 = Lundi
- 2 = Mardi
- ...
- 6 = Samedi
- 7 = Dimanche (représenté deux fois pour les deux types de semaine, Anglosaxone ou japonaise qui commence par dimanche (0) ou internationale qui commence par Lundi (7))
Une étoile veut dire toutes les itération, et on peut mettre un slash (/) pour donner un interval sur chaque itération.
Ce qui nous donne :
*/1 * * * *
Ensuite il faut que je lui indique la tâche à executer toutes les 1 minute.
*/1 * * * * date >>/home/pi/log.txt
Soit :
"CTR X" puis "Y" puis "enter"
Je patiente quelques minutes et si on lit le fichier /home/pi/log.txt j'obtiens :
Tue 12 Jan 20:59:02 CET 2016
Tue 13 Jan 21:00:01 CET 2016
Tue 13 Jan 21:01:01 CET 2016
Tue 13 Jan 21:02:01 CET 2016
Tue 13 Jan 21:03:01 CET 2016
Bien sur il y a bien d'autres commandes plus intéressante à automatiser, notez que la planification n'est précise qu'à quelques secondes prêt.
Sources :
CRON
https://fr.wikipedia.org/wiki/Cron
https://doc.ubuntu-fr.org/cron
https://help.ubuntu.com/community/CronHowto
http://www.admin-debian.com/gestion-des-processus/cron-ou-comment-lancer-des-taches-sous-linux/
https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/executer-un-programme-a-une-heure-differee
NTP
https://help.ubuntu.com/lts/serverguide/NTP.html
http://www.system-linux.eu/index.php?post/2010/01/05/Mettre-vos-serveurs-%C3%A0-la-bonne-heure-avec-NTP
http://support.ntp.org/bin/view/Support/InstallingNTP
https://wiki.debian.org/fr/NTP
http://raspberrypi.stackexchange.com/questions/8231/how-to-force-ntpd-to-update-date-time-after-boot
Aucun commentaire:
Enregistrer un commentaire