« Superblocs de secours ext3 | Home | météo sous linux avec ZyGrib »
dernier samedi du mois
posté par cep le 21 novembre 2008
On a parfois besoin de savoir à quelle date va tomber le dernier samedi du mois, ou autre jour de l’année.
Le petit programme ncal lancé sans paramètre supplémentaire affiche le mois en cours.
:~$ ncal
novembre 2008
lu 3 10 17 24
ma 4 11 18 25
me 5 12 19 26
je 6 13 20 27
ve 7 14 21 28
sa 1 8 15 22 29
di 2 9 16 23 30
Partant de là, la simple commande :
ncal |awk '/sa/ {print $NF}'
permet d’afficher la date du dernier samedi du mois en cours. Pour connaitre le dernier dimanche, il suffit de remplacer /sa/ par /di/ et pour un autre mois, il faut passer l’option du mois à ncal.
Ainsi on peut par exemple lancer précisément un script le dernier samedi du mois car cron ne le permet pas directement. Le script pourrait être :
#!/bin/sh
#compare la date du jour avec une référence
#représentant la date du dernier samedi du mois.
#Si les dates concordent, le programme ou le script
#passé en paramètre SAVE est lancé
SAVE=$(sh ton_script_à_lancer) #à adapter en portant le chemin du scrip
JOUR=$(date +%d)
REF=$(ncal |awk '/sa/ {print $NF}') #remplacer /sa/ pour un autre jour
if [ $JOUR = $REF ]
then
$SAVE
else
echo "ce n'est pas le bon jour"
fi
Il suffira ensuite de demander à cron de lancer cette tâche sur une plage de jours, par exemple du 22 au 31, et à son tour cette tâche lancera le programme au moment voulu.
ncal comme cal et calendar font parti du paquet bsdmainutils, en principe installé en standard sur toutes les distributions.
cep
