Fórum Root.cz
Hlavní témata => Software => Téma založeno: Clee-Shock 06. 11. 2019, 14:01:17
-
Ahoj,
Chtěl bych požádat o pomoct při konfigurací CRONTAB tak, aby:
skript1.sh bude spuštěný: Každý pátek v měsíci kromě posledního pátku v měsíci.
skript2.sh bude spuštěný: Každý poslední pátek v měsíci.
btw: Nechci, aby skript1.sh a skript2.sh běžel jakýkoli pátek souběžně.
Předem díky.
-
nechcete mít jeden skript, spouštěný každý pátek, a v něm mít if určující, jestli je poslední v měsíci nebo ne? a podle toho pustit příslušný kód?
-
nechcete mít jeden skript, spouštěný každý pátek, a v něm mít if určující, jestli je poslední v měsíci nebo ne? a podle toho pustit příslušný kód?
Pochopil jsem tedy správně, že takovou konfiguraci crontab neumožňuje, jsem rád, že mi něco neuniklo :)
Dobrá možnost if je lákavá. Podle čeho udělat test (kontrolu) na poslední pátek v měsící?
-
Anebo zkusit systemd timers, podporu pro "last someday" maji.
https://www.freedesktop.org/software/systemd/man/systemd.time.html#Calendar%20Events
-
Dobrá možnost if je lákavá. Podle čeho udělat test (kontrolu) na poslední pátek v měsící?
Napr. pripocitat 7 dni a skontrolovat ci sa nezmenil mesiac?
-
Můžete si dovolit ten luxus, že jeden den za 28 let to bude fungovat špatně? Pokud ano, tak mě napadá řešení na 6 řádků v crontabu:
0 0 1-24 1,3,5,7,8,10,12 5 skript1
0 0 1-23 4,6,9,11 5 skript1
0 0 1-21 2 skript1
0 0 25-31 1,3,5,7,8,10,12 5 skript2
0 0 24-30 4,6,9,11 5 skript2
0 0 22-28 2 skript2
Ale jak už tu zaznělo, ten nápad pustit každý pátek a zjistit, jestli za týden je stejný měsíc, je lepší.
-
Dobrá možnost if je lákavá. Podle čeho udělat test (kontrolu) na poslední pátek v měsící?
Napr. pripocitat 7 dni a skontrolovat ci sa nezmenil mesiac?
Tak jsem to vyresil svym zpusobem. Dekuju vsem za nakopnuti :)
#!/bin/bash
TODAY=$(date +%d)
LASTFRI=$(cal | tail -2 | head -1 | cut -d' ' -f6)
if [ $TODAY -ne $LASTFRI ]; then
echo "Dnesek neni posledni den v mesici"
else
echo "Dnesek je posledni den v mesici"
fi
-
Dobrá možnost if je lákavá. Podle čeho udělat test (kontrolu) na poslední pátek v měsící?
Napr. pripocitat 7 dni a skontrolovat ci sa nezmenil mesiac?
Tak jsem to vyresil svym zpusobem. Dekuju vsem za nakopnuti :)
#!/bin/bash
TODAY=$(date +%d)
LASTFRI=$(cal | tail -2 | head -1 | cut -d' ' -f6)
if [ $TODAY -ne $LASTFRI ]; then
echo "Dnesek neni posledni den v mesici"
else
echo "Dnesek je posledni den v mesici"
fi
Tato podminka by nefungovala spravne, pokud by mesic koncil jinym, dnem nez sobota nebo patek, takze edit:
cal | awk {'print $6'} | xargs | awk '{print $NF}'
-
Ak pouzivas GNU date a bash, tak sa da pouzit aj nasledovne:
#!/bin/bash
read -r TODAY TODAY_MONTH WEEKDAY <<< $(date "+%Y-%m-%d %m %A")
NEXT_WEEK_MONTH=$(date -d "$TODAY 7 days" +%m)
[[ $TODAY_MONTH -eq $NEXT_WEEK_MONTH ]] && echo "Not the last $WEEKDAY of the month" || echo "Last $WEEKDAY of the month"