synology házi szerver

sziasztok,

Az alábbi NAS-on szeretnék egy bash scriptet futtatni:
http://synology.hu/?oldal=termek_ds112j

A problémám az hogy a következő sorra hibát kapok:
YESTERDAY=$(date -d "yesterday" +"%Y%m%d")

A "yesterday" és a "1 days ago" sem működik.

Ez a sor ubuntu alatt hibátlanul lefut. Van valakinek ötlete, milyen módon hivatkozhatnék a tegnapi napra ezen a masinán?

Hozzászólások

A hibauzenetetedet kiszurte az internet.
Be tudnad vhogy megis varazsolni?

Egyebkent gondolom busybox van benne, talald ki, hogy azon hogyan kell.

tompos

Ubuntun próbáld ezt: date -d '-1 day' +'%Y%m%d'

FreeBSD-n: date -v-1d '+%Y%m%d'

A Linux disztrókhoz a GNU féle coreutils-ból érkező van. A FreeBSD-ben viszont ez áll a man oldal alján:

STANDARDS
The date utility is expected to be compatible with IEEE Std 1003.2
(``POSIX.2''). The -d, -f, -j, -n, -r, -t, and -v options are all exten-
sions to the standard.

HISTORY
A date command appeared in Version 1 AT&T UNIX.

Ubuntun a gnu féle date van, ezért abban van ilyen. Busyboxban meg nincs olyan.

A busybox manja nem is említi sehol, hogy tudna relatív időket...

A kivonásra ne a busyboxot mint date parancsot, hanem a busyboxot, mint shell-t beszéld rá:

parancssorban a $(( a - b )) formát a shell a kifejezés értékével helyettesíti. Azaz a
date +%s kiírja az aktuális időpontot másodpercekben, a $(( $(date +%s) - 24 * 60 * 60 )) pedig a kiírt másodperc értékből kivonja a kívánt 1 napot. Már csak a date -et kell rábeszélni, hogy ezt a másodperc értéket fogadja el dátumként, és azt írja ki a neked megfelelő formában. Mivel az én busyboxom a date: applet not found üzenettel honorálja a busybox date --help parancsot, kénytelen leszel a sajátodon ellenőrizni, hogy ez utóbbihoz neki milyen opció kell. (A GNU-féle és a FreeBSD-féle ugyanis eltérő opciókat használ ehhez.)

Szerk: most nézem, hogy felettem a link majdnem ugyanezt mondja. Javasolnám a ./busybox date helyett a sima date formát ;-) ugyanis nm hiszem, hogy találsz az aktuális könyvtárban busybox-ot. Szóval ha jól látom, akkor

date -D %s -d $(( $(date +%s) - 24 * 60 * 60 ))

Van egy másik gond is ezzel a géppel. Újraindítás (normális és áramszünet esetén is) után eltűnik az a sor az /etc/crontab-ból, ami futtatja a srciptet. De csak az amit én írtam be. Egy alapból bent lévő (csomagfrissítés) ott marad. Mintha indításnál visszaállna defaultra. Van valakinek ötlete miért csinálja ezt?

szerk:
a szóközöket le kellett cserélni tabokra, így nem törli a sort újraindításkor.