Problémom sú mday a wday, ktoré majú mierne iný význam než zvyšok podmienok. Sémantika je taká, že z týchto dvoch podmienok stačí, keď je splnená jedna a skript sa spustí. V preklade do programátorštiny:
if (min AND hour AND month AND (mday OR wday)) then spusti_cron_príkaz
To znamená, že v každom treťom mesiaci (*/3) sa skript bude spúšťať každý deň od prvého do siedmeho a potom navyše ešte aj každú nedeľu. Je to navýsosť matúce a chvíľu mi trvalo, kým som prišiel na to, prečo sa moje crony spúšťajú v tak nepochopiteľných dňoch.
Workaround, ktorý som zvolil ja, je taký, že cron spúšťam len na základe mday a na začiatku skriptu odfiltrujem iné dni než žiaduci:
10 0 1-7 */3 * /root/bin/moj_skript.sh
#!/bin/sh
# ked nie je sobota, tak skript ukoncime
if [[ `date +%w` != 6 ]]
then
exit
fi
Tým dosiahnem prvú sobotu v mesiaci. Na nedeľu si to musíš prispôsobiť už sám.