Skrypt w Bashu

Odpowiedz Nowy wątek
2013-02-27 12:41
0

Witam

Założenia są takie, że w zależności od dnia tygodnia (np. poniedziałek) będzie się wykonywać coś innego. W cyklu dwutygodniowym. To co się ma wykonać w dany dzień np. w poniedziałek jest do załatwienia z poziomu basha. Jednak jak ustawić crona, żeby wykonywał taki skrypt codziennie, ale w cyklu dwutygodniowym (czyli był wrażliwy na dni tygodnia: poniedziałek, wtorek, środa.. itd.)? Bo z poziomu basha raczej nie wykryję chyba czy jestem w 1 tygodniu czy w 2.

Pozdrawiam

Pozostało 580 znaków

2013-02-27 12:59
0

A czemu niby nie?

$ date --help | grep tydz
  %U   numer tygodnia w roku, niedziela zaczyna tydzień (00...53)
  %V   numer tygodnia ISO, poniedziałek zaczyna tydzień (01...53)
  %W   numer tygodnia w roku, poniedziałek zaczyna tydzień (00...53)

Pozostało 580 znaków

2013-02-28 22:00
0

Hmm. Tyle to ja wiem :-) Ale może nieprecyzyjnie opisałem co chcę osiągnąć. Potrzebuję automat (skrypt) wykonujący:

Jeśli jest poniedziałek 1- część skryptu wykonująca zadania wykonujące się tylko w poniedziałek 1
Jeśli jest wtorek 1- część skryptu wykonująca zadania wykonujące się tylko we wtorek 1
Jeśli jest środa 1- część skryptu wykonująca zadania wykonujące się tylko w środę 1
Jeśli jest czwartek 1- część skryptu wykonująca zadania wykonujące się tylko w czwartek 1
Jeśli jest piątek 1- część skryptu wykonująca zadania wykonujące się tylko w piątek 1
Jeśli jest sobota 1- część skryptu wykonująca zadania wykonujące się tylko w sobotę 1
Jeśli jest niedziela 1- część skryptu wykonująca zadania wykonujące się tylko w niedzielę 1
Jeśli jest poniedziałek 2- część skryptu wykonująca zadania wykonujące się tylko w poniedziałek 2
Jeśli jest wtorek 2- część skryptu wykonująca zadania wykonujące się tylko we wtorek 2
Jeśli jest środa 2- część skryptu wykonująca zadania wykonujące się tylko w środę 2
Jeśli jest czwartek 2- część skryptu wykonująca zadania wykonujące się tylko w czwartek 2
Jeśli jest piątek 2- część skryptu wykonująca zadania wykonujące się tylko w piątek 2
Jeśli jest sobota 2- część skryptu wykonująca zadania wykonujące się tylko w sobotę 2
Jeśli jest niedziela 2- część skryptu wykonująca zadania wykonujące się tylko w niedzielę 2

I tak cyklicznie przez cały rok chciałbym powtarzać taki dwutygodnik. Oczywiście wpadający w odpowiednie dni tygodnia.

Pozostało 580 znaków

2013-02-28 22:14
0

To ustawiasz, że ma być co poniedziałek i sprawdzasz parzystość tygodnia i wykonujesz odpowiednią akcję.

Pozostało 580 znaków

2013-02-28 22:32
0

Mi nie wydaje mi się to takie proste. A co z przełomami miesięcy? Przecież wszystkie nie zaczynają się poniedziałkiem? A ja potrzebuję zachować ciągłość skryptu i rotacji dni.

Pozostało 580 znaków

2013-02-28 23:30
0

Podaj przykład, który Cię tak dręczy. Przecież po poniedziałku zawsze jest wtorek. I nie ma to nic wspólnego z miesiącami...

Pozostało 580 znaków

2013-03-01 01:33
0

Problem w tym, który wtorek? Bo we wtorku1 co innego ma się wykonać niż we wtorku2. Z tym mam problem. Chodzi o rozpoznawanie, który wtorek ma się obecnie wykonać: 1 czy 2? 2 ma nastąpić po 1 i tak w kółko cały rok, z miesiąca na miesiąc: 1,2,1,2,1,2,1,2.... A przykład logiczny jest rozpisany wyżej. Kod nie ma nic tu do rzeczy.

edytowany 3x, ostatnio: Pienia, 2013-03-01 01:36

Pozostało 580 znaków

2013-03-01 01:36
0

Jak to który wtorek ? Po poniedziałku 1 jest zawsze wtorek 1. A po poniedziałku 2 jest zawsze wtorek 2.
No chyba, że nie rozumiem treści zadania :p

Pozostało 580 znaków

2013-03-01 06:43
0

Jeżeli chcesz skrypt uruchomić w crontabie to masz tak w etc:
cron.d/ - no ogólny
cron.daily/ - codziennie
cron.hourly/ - co godzine
cron.monthly/ - raz w miesiacu
cron.weekly/ - raz w tygodniu

lub możesz pokongigurować komenda crontab -e i wyglada tak

          • <comenda>

1 od lewej to minuta
2
od lewej to godzine
3 od lewej to dzien miesiaca
4
od lewej to miesiac
5* od lewej to dzien tygodnia(0 - 7 gdzie chyba 0 i 7 to niedziela)

jak rozwiązać problem, albo jak napiał @winerfresh, lub możesz crona ustawić - to zostawiam Twojej inwencji twórczej np

10 10 2 * 2 reboot ///< o 10:10 każdego miesiąca kiedy będzie to 2 i wtorek będzie reboot systemu o tej godzinie :D


"Chodzenie po wodzie i tworzenie oprogramowania wg specyfikacji są łatwe, o ile woda i specyfikacja są zamrożone" - Edward V. Berard

Pozostało 580 znaków

2013-03-01 10:09
0

Obsługę crona znam. Nie piszcie mi tu oczywistych oczywistości :-)

10 10 2 * 2 reboot -> I jak ma mi to pomóc? Podręcznikowy wręcz przykład :-) Ok, ale nieważne. Mam dwa skrypty. Pierwszy to zadania w pierwszym tygodniu, drugi w drugim. Jak je ustawić w cronie, aby zawsze jeden wykonywał się po drugim. Z uwzględnieniem, że jeśli dany tydzień zacznie się po koniec miesiąca to będzie kontynuowany z początkiem nowego miesiąca. Ewentualnie załatwić to jeszcze jednym globalnym skryptem wywołującym jakoś na przemian te dwa. date +%A załatwia mi tylko jaki jest dzień w tygodniu.

Przykład jednego (drugi jest analogiczny, tylko dla drugiego tygodnia, ale inne polecenia dla poszczególnych dni):

#!/bin/bash

case `date +%A` in
    "poniedziałek" | "Monday" )
        `polecenia do wykonania w poniedzialek`;;
    "wtorek" | "Tuesday" )
        `polecenia do wykonania we wtorek`;;
    "środa" | "Wednesday" )
        `polecenia do wykonania w srode`;;
    "czwartek" | "Thursday" )
        `czwartek`;;
    "piątek" | "Friday" )
        `piatek`;;
    "sobota" | "Saturday" )
        ;;
    "niedziela" | "Sunday" )
        ;;
    *)
        ;;
esac
edytowany 2x, ostatnio: Pienia, 2013-03-01 10:10

Pozostało 580 znaków

2013-03-01 11:36
qweasd
0

a nie możesz gdzieś przechować zmiennej? od razu problem z głowy

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0