To eleganckie! Jak zauważono, nadal ma ona zasadnicze znaczenie w 53. sobotę roku, co nastąpi około siedemdziesiąt lat na każde cztery stulecia.
MadHatter
@ Cyrus dziękuję za odpowiedź, ale jeśli napiszę * * * * 5 test $ (($ (data +% W)% 2)) -eq 1 && /u02/restore/scripts/test.sh skrypt nie uruchom, ale jeśli napiszę * * * * 5 /u02/restore/scripts/test.sh skrypt zostanie uruchomiony. dlaczego twoje wyrażenie nie działa? Właśnie testowałem przypadki i okazało się, że to nie działa.
kupa
1
Mój błąd. Cron interpretuje% jako znak nowej linii. Ucieknij oba% za pomocą \ w kronice:0 8 * * 6 test $(($(date +\%W)\%2)) -eq 1 && yourCommand
Cyrus
Niestety, aby przywrócić ten stary pytanie, ale to nie działa dla mnie i gdy próbuję wykonać $((10#$(date +%W)%2)) -eq 1 && echo OKmoje prób powłoki wykonać wynik obliczeń tygodniu: -bash: 1: command not found. Wszelkie wskazówki, dlaczego to robi? Dzięki.
jhuet
3
@ jhuet: testnie jest użytkownikiem, to polecenie. Spróbuj:test $((10#$(date +\%W)%2)) -eq 1 && echo odd || echo even
Cyrus
4
To, co pokazałeś, to „co tydzień”. Zatem kod to:
0 8 * * 6
Czy na pewno musisz uruchamiać go co dwa tygodnie?
Lepiej jest użyć tego, co dał Cyrus - $ (($ (data +% W)% 2)) „W” oznacza liczbę tygodni w roku. Zaczynając od zera do 53. Jeśli można go podzielić na dwa, to jest to Twój „co drugi” tydzień. Więc cronjob działa co tydzień, ale polecenie „expr” wykonuje polecenie komendy tylko wtedy, gdy liczbę tygodnia można podzielić przez 2.
Glueon
kiedy uruchamiam test $ (($ (data +% W)% 2)) -eq 1 w wierszu poleceń nic nie zwraca, dlaczego?
kupa
1
po prostu uruchom echo $?po uruchomieniu tego polecenia, aby zobaczyć jego kod powrotu - to jest z nim ważne
0 8 * * 6 test $(($(date +\%W)\%2)) -eq 1 && yourCommand
$((10#$(date +%W)%2)) -eq 1 && echo OK
moje prób powłoki wykonać wynik obliczeń tygodniu:-bash: 1: command not found
. Wszelkie wskazówki, dlaczego to robi? Dzięki.test
nie jest użytkownikiem, to polecenie. Spróbuj:test $((10#$(date +\%W)%2)) -eq 1 && echo odd || echo even
To, co pokazałeś, to „co tydzień”. Zatem kod to:
Czy na pewno musisz uruchamiać go co dwa tygodnie?
źródło
echo $?
po uruchomieniu tego polecenia, aby zobaczyć jego kod powrotu - to jest z nim ważne