Strona 1 z 1
Crontab - włączanie skryptu co drugi poniedziałek
: 04 kwietnia 2011, 18:59
autor: radziwil
Witam,
Jak ustawić Crontaba, aby uruchamiał skrypt co drugi poniedziałek np. o godz. 22:00? Zapis:
jest zapisem nie poprawnym. Otrzymuję następujący komunikat:
Kod: Zaznacz cały
crontab: installing new crontab
"/tmp/crontab.XXXXvzedho":14: bad day-of-week
errors in crontab file, can't install.
Jak powinien wyglądać poprawny zapis?
Pozdrawiam
Darek
: 04 kwietnia 2011, 23:39
autor: lun
Troszkę pośpieszyłem się z komentarzem, nie doczytując, że chodzi o co drugi poniedziałek w miesiącu.
Nie obędzie się bez użycia polecenia
użytego w tablicy crontaba.
Postaram się napisać Ci jutro jak powinno to wyglądać.
Edyja:
Jednak jest to niełatwy przypadek.
Rozwiązanie, które znalazłem jest takie aby ustawić w cronie, aby skrypt uruchamiał się co poniedziałek, a wewnątrz skryptu umieszczasz warunek sprawdzający czy ten poniedziałek jest drugim w miesiącu.
Kod: Zaznacz cały
dow=`date +%a`
day=`date +%d`
if [ $dow != Mon -o \
$day -lt 8 -o \
$day -gt 14 ]
then
echo 'Will not run - not 2nd Monday'
exit
fi
echo 'This is 2nd Monday. Continuing ...'
: 05 kwietnia 2011, 16:50
autor: radziwil
Witam
Jeśli dobrze rozumiem Twoją propozycję, to w drugi poniedziałek miesiąca ma się wykonać jakiś skrypt. Natomiast mi zależy, aby dany skrypt wykonywał się co drugi poniedziałek, np. w tygodniu parzystym lub nie.
Sprawdzę, czy taki zapis będzie działał:
Kod: Zaznacz cały
if [ $(($nrtyg % 2)) -eq 0 ]
then
skrypt1
else
skrypt2
fi
Pozdrawiam
Darek
: 05 kwietnia 2011, 23:09
autor: lun
Nie do końca mnie dobrze zrozumiałeś, więc zacytuję sam siebie :
ustawić w Cronie, aby skrypt uruchamiał się co poniedziałek, a wewnątrz skryptu umieszczasz warunek sprawdzający czy ten poniedziałek jest drugim w miesiącu.
A kod wklejony poniżej pierwszego postu jest właśnie tym w/w warunkiem sprawdzającym. Wystarczy umieścić wewnątrz pętli skrypt do wykonania.
: 06 kwietnia 2011, 19:20
autor: lessmian2
Krócej (dla nieparzystych):
Kod: Zaznacz cały
0 22 * * 1 expr `date +\%e` \% 2 >/dev/null || mojskrypt
Ew. dla parzystych poniedziałków:
Kod: Zaznacz cały
0 22 * * 1 expr `date +\%e` \% 2 >/dev/null && mojskrypt
W każdym razie chodzi o to, żeby sprawdzić czy modulo 2 z dnia tygodnia jest równe 0 czy 1 i odpowiednio uruchomić (lub nie) polecenie
