1

Temat: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Potrzebuje Panowie uruchamiać pewien skrypt co 30 lub 31 dni i zapisać go pewnie do crona

ale jak to zrobić ??

W sieci znalazłem tylko rozwiązania np co 2 dni, lub na ostatni dzień miesiąca.

A ja potrzebuję równo co 30 lub 31 dni smile

2 (edytowany przez manguscik 2017-03-18 15:26:08)

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Powinno zadziałać:
W kronie

0 22 28-31 * * skrypt.sh

skrypt.sh

#!/bin/bash
TODAY=`date +%d`
TOMORROW=`date +%d -d "1 day"`

if [ $TOMORROW -lt $TODAY ]; then
  "TWOJA KOMENDA/Y"
fi
Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

3

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

juz sprawdzam smile thx smile

Da sie to jakos podglądnac kiedy system wrzuci date nowego zadania, powtórki ?

I ustawiłes teraz na 30 dni czy 31 ?

4

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Edytowałem post spróbuj w ten sposób co zmieniłem

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

5

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Wyrzuca OpenWRT błąd:

root@OpenWrt:~# /root/test_.sh
date: invalid date '1 day'
/root/test_.sh: line 6: [: -lt: unary operator expected
root@OpenWrt:~#

6

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Na zwykłem linuxie działa

root@manguscik:~# date +%d
18
root@manguscik:~# date +%d -d "1 day"
19

a na openwrt widzę nie działa trzeba by to inaczej ugryźć smile

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

7

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

A na zwykłym openwrt trzeba sobie albo pełne date doinstalować albo inaczej ten 1 day zapisać.

I tu praca domowa - kilka razy to już podawałem na forum...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8 (edytowany przez onken 2017-03-18 15:44:16)

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Ale jak ugryzc smile

Cezary, nie daj się prosić smile

9

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Pierwsze z googli? http://lists.busybox.net/pipermail/busy … 68752.html

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10 (edytowany przez onken 2017-03-18 16:00:22)

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Super, tylko nadal nie wiem jak tego użyc w pomyśle @manguscika smile

Wpisałem tak:

TOMORROW=`date -d "@$(($(date +%s) + 86400))"`

Tyle ze nadal wyrzuca błąd:


root@OpenWrt:~# /root/test_.sh
/root/test_.sh: line 6: [: too many arguments

11

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Zrób sh -x  /root/test_.sh i pokaż co wyszło.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Chyba problem jest w zbyt długim podaniu daty Tommorow:

root@OpenWrt:~# sh -x  /root/test_.sh
+ date +%d
+ TODAY=18
+ date +%s
+ date -d @1489935859
+ TOMORROW=Sun Mar 19 16:04:19 CET 2017
+ [ Sun Mar 19 16:04:19 CET 2017 -lt 18 ]
sh: Mar: unknown operand
root@OpenWrt:~#

13

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

No odkładnie smile  Zapomniałeś dodać +'%d' do tego co zrobiłeś...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

14 (edytowany przez onken 2017-03-18 16:20:46)

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

To jak to teraz przetestowac czy działa poprawnie smile ??

Co oznacza parametr -lt ??

policzyłem ze 86400 x 30 dni = 31 dni ? = 2592000, zgadza się ??

Ale jak skrypt jutro odpalę to znów się "wykona" ?

15

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Zrób sobie tak dodanie daty :

TODAY=`date +"%d"`
TOMORROW=$(($TODAY+1))
Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

16

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

-lt == mniejszy niż (less than)

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17 (edytowany przez onken 2017-03-18 16:26:19)

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Oki

Próbuje tylko to zrozumieć smile

Jak to działa i wie kiedy ma sie uruchomić, bo jak rozumiem będzie sie uruchamiac od 28 do 31 i skad "wie" ze ma sie uruchomic tylko raz w tym okresie no i oczywista co ustalone 31 dni ?

Wpisałem TODAY+30 i wychodzi cos takiego: ( czy zrobiłem błąd skoro ma działac co 31 dni ? )

root@OpenWrt:~# sh -x  /root/test_.sh
+ date +%d
+ TODAY=18
+ TOMORROW=48
+ [ 48 -lt 18 ]
+ echo TEST
TEST

18 (edytowany przez manguscik 2017-03-18 16:30:25)

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Skąd CI się wzieło 48 ? powinno być 19

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

19

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Wpisałem today +30 smile

Pewnie ma zostać 1 ?

Chodziło mi o to skąd skrypt wie ze pomiedzy 28-31 ma "zadziałać" tylko raz skoro bedzie uruchamiany 3-4 razy w miesiącu

20

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

cron uruchamia się tylko pomiędzy 28 a 31 a skrypt porównuje date jak  TOMORROW jest mniejszy to ma wykonać skrypt

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

21

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Hmmm

Czyli to jest skrypt uruchamiany ostatniego dnia miesiąca, dobrze dedukuję ??

a mi bardzo potrzeba uruchamianie co równe 31 dni smile czyli będą to rózne dni, chyba ze ja cos pokręciłem ??

22

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Ten skrypt sprawdza czy jest ostatni dzień miesiąca i jeżeli jest ostatni dzień miesiąca to uruchamia się  zadanie

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

23 (edytowany przez onken 2017-03-18 17:31:03)

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

No własnie, a mi chodzi o coś innego smile

Tak pomyslałem, sprawdzamy date, zapisujemy do pliku

Poźnizej skrypt sprawdza czy miedzy jedna datą a obecną mineło 31 dni, jesli tak to wykonuje inny skrypt

Pomozecie smile ?

Tak jak pisałem, potrzebuje rozwiązanie które wykona się co 31 dni  smile

24

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Wędka:
- date +%s podaje czas w sekundach od 1sty1970
- 31 dni to 2678400 sekund
- jak za 31 dni sprawdzisz date +%s  to będziesz miał czas w sekundach... większy niż 2678400
Więc zapisz sobie ten czas, następnego dnia sprawdź czy jest większy niż 2678400 jeżeli tak to coś wykonaj i nadpisz plik z czasem...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

25

Odp: Skrypt w cronie co równe 30 lub 31 dni, jak ??

Podpowiesz jak zapisac np do tmp ( pozniej zmienie lokalizacje ) i pozniej odczytac date ?

Ale to by pasowało chyba porownac date np z rokiem.miesiacem.dniem bo sam dzien chyba nie starczy... bo licznik by sie przekrecił np w lutym.

Wiec zapisac format i odczytac pozniej i porownac smile