Cours - Automatiser avec at et les cron jobs
Executer des commandes (ou un script) à distance
# Verifier depuis combien de temps la machine tourne
$ echo "uptime" | ssh machine
19:48:51 up 1 day, 2:05, 1 user, load average: 0.08, 0.02, 0.01
# Lancer un script à distance
$ cat script.sh | ssh machine
[...
at
- Executer une fois une action à un moment précis dans le futur
- Format de date/temps plutôt user-friendly
# En interactif
$ at 5:00 PM
warning: commands will be executed using /bin/sh
at> reboot
job 5 at Fri Oct 12 17:00:00 2018
# Avec un script
$ at now + 30 minutes -f mettre_a_jour.sh
job 6 at Thu Oct 6 20:22:00 2018
9. Automatiser
Les jobs cron
- Répéter une tâche à intervalle régulier (heures, jours, mois, ...)
- Chaque utilisateur peut en configurer avec
crontab -e
10 * 1 * * /chemin/vers/un/script
Les jobs cron : syntaxe (1/3)
10 * 1 * * /chemin/vers/un/script
10: à la minute 10*:toutes les heures1le 1er du mois*tous les mois*(tous les jours de la semaine)
Les jobs cron : syntaxe (2/3)
0 8 * * 1-5 /chemin/vers/un/script
0: à la minute 08: à 8h*(tous les jours du mois)*tous les mois1-5tous les jours de travail (lundi à vendredi)
Les jobs cron : syntaxe (3/4)
*/10 * * * * /chemin/vers/un/script
*/10: toutes les 10 minutes*toutes les heures*tous les jours du mois*tous les mois*tous les jours de la semaine
Les jobs cron : syntaxe (4/4)
http://crontab.guru/to the rescue !
/etc/crontab et /etc/cron.d/
- Ce sont des fichiers/dossiers de config cron "globaux"
- Dedans, on specifie aussi l'utilisateur utilisé pour lancer le script :
# M H D M W User Command --->
*/30 * * * * feed2toot feed2toot -c /etc/feed2toot/feed2toot.ini
/etc/cron.hourly, daily, weekly, monthly
- Ils contiennent directement des scripts qui seront executés automatiquement à certains intervalles
- Attention
- le nom des fichiers dedans ne doit pas avoir d'extensions ...
- .. et doit être executable (+x)