Pour avoir une vue globale des crins qui tournent sur différents serveurs
echo -n "Today : "
curl -s "http://api.fixer.io/latest?symbols=EUR,CHF&base=CHF" | jq '.rates|.EUR'
for i in {1..10}; do
dc=$(date --date="$i day ago" +%Y-%m-%d)
echo -n "$dc : "
curl -s "http://api.fixer.io/${dc}?symbols=EUR,CHF&base=CHF" | jq '.rates|.EUR'
done
echo "http://www.xe.com/currencycharts/?from=CHF&to=EUR&view=1M"
On peut avoir besoin de faire tourner un ou plusieurs cron dans un environnement Beanstalk composé de X instances
Etant donné que toute les instances sont configurées de la meme manière, si on rajoute le cron dans la config, il sera éxecuté sur toutes les instances
Une solution serait de determiner si on est le "runnner" ou non avant de lancer le cron
Pour que toutes les instances sachent qui est le runner, on peut imaginer un système comme celui ci :
ça a l'avantage de fonctionner quel que soit le nombre d'instances et ne pas stocker un état (on utilise les infos de l'ELB)
Et si on ne veut pas faire tourner tous les crons sur le runner, on pourrait déterminer runnner1 runnner2 runner3 etc suivant l'ordre et faire tourner certains crons si on est runner1 ou bien runner2
The "sixth" field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (), will be changed into newline charac- ters, and all data after the first % will be sent to the command as standard input.
Prenons un bash qui ouput sur sa sortie standard (stdout) et sur sa sortie d'erreur (stderr) :
echo good
echo bad >&2
echo vanish >&2
echo good!
Comment faire pour rediriger la sortie standard vers un fichier (ou /dev/null pour l'exemple) et filter la sortie d'erreur pour retirer la ligne "vanish" ?
Pour ça il faut utiliser un process substitution :
/root/test.bash 2> >(grep -v vanish >&2) >/dev/null
Bien pratique dans un crontab pour recevoir un peu moins de mail lorsqu'on a des "erreurs" acceptables (rsync vanished par exemple)
SHELL=/bin/bash
Pour en savoir plus sur les process substitution : http://tldp.org/LDP/abs/html/process-sub.html
Bon à savoir, pour rediriger la sortie standard d'un cron dans un fichier avec la date, penser à échapper les "%"
/path/to/log/dir/$(date +\%Y-\%m-\%d).log
Tiens tiens ça fait un quelques semaines que je suis à la recherche dune solution similaire! À tester
Pour ne plus que le cron de logrotate gueule sur les vks ovh
Librairie python qui va nous servir pour piclodio2 (https://github.com/Sispheor/Piclodio2)
Chaque réveil est en fait une ligne dans le cron, avec un commentaire dans lequel on retrouve son id.. Du coup avec cette lib, l'interaction avec le cron va être + simple :-)
via Nico
crontab -l (pour chaque user) OU ls /var/spool/cron/crontabs/*
cat /etc/crontab
for file in $(ls /etc/cron.d); do echo $file && cat $file; done
for file in $(ls /etc/cron.hourly); do echo $file && cat $file; done
for file in $(ls /etc/cron.daily); do echo $file && cat $file; done
for file in $(ls /etc/cron.weekly); do echo $file && cat $file; done
for file in $(ls /etc/cron.monthly); do echo $file && cat $file; done