[ CoyoteKG @ 25.04.2018. 14:30 ] @
Pokušavam da namestim cronjobs za neki matori cakephp sajt kod nas na serveru. I nemam nikakve greske, ali kolega mi javlja da se nesto nesto ne izvrsava na samom sajtu sto treba.

Pojma nemam kako da dijagnostikujem problem.

crnjob je
10 * * * * /var/www/vhosts/site.com/sub.site.com/cake/console/cake cronshell -app /var/www/vhosts/site.com/sub.site.com/app


ovaj cake fajl je

Code:
#!/bin/bash
clear
LIB=${0/%cake/}
APP=`pwd`
exec php -q ${LIB}cake.php -working "${APP}" "$@"
exit;


Ovo LIB ne razumem, ali komanda bi valjda trebalo da okine

/var/www/vhosts/site.com/sub.site.com/cake/console/cake.php

I on pokreće cake.php koji treba da odradi to sto kolega ocekuje.

Nemam nikakav error sa moje strane, a ni ne znam sta treba da se desi jer se terminal resetuje.

Pokusao sam sa
/var/www/vhosts/site.com/sub.site.com/cake/console/cake cronshell -app /var/www/vhosts/site.com/sub.site.com/app > file.txt
da vidim da li cu da dobijem neki output, ali u fajlu nema niceg citljivog

Je l imate neki predlog kako da skontam sta je problem?


[Ovu poruku je menjao CoyoteKG dana 25.04.2018. u 15:41 GMT+1]
[ Branimir Maksimovic @ 25.04.2018. 14:36 ] @
A sta ti je ovo 0? Valjda $0 ili slicno? Totalno mi je nepoznato to sta je stavljeno u LIB i kako bash to parsuje i sta uzima.
[ CoyoteKG @ 25.04.2018. 14:41 ] @
Pojma nemam sta je.
Na live sajtu to radi, a koliko videh to je i valjda nesto default cakephp.

Pokusao sam da hardkodujem i da stavim prave putanje, ali nista nisam postigao
[ Branimir Maksimovic @ 25.04.2018. 14:46 ] @
pa vidi u logu dal se nesto javlja.
[ CoyoteKG @ 25.04.2018. 14:52 ] @
ako mislis na error_log, nema nikakvu gresku ni warning.
[ djoka_l @ 25.04.2018. 15:50 ] @
LIB=${0/%cake/}

postavlja varijablu LIB na vrednost pozicionog parametra 0 kojem je izbačen cake deo


U tvom konrektnom slučaju, LIB postaje

/var/www/vhosts/site.com/sub.site.com/cake/console
ili
/var/www/vhost/site.com/sub.site.com/console/cake
(ne znam da li menja prvu, drugu, ili obe pojave stringa cake)

jer je pozicioni parametar 0 sam poziv shell skripta

/var/www/vhosts/site.com/sub.site.com/cake/console/cake

E, ovo radi kada je shell bash. Po defaultu, crontab skriptovi se izvršaju u sh shelu i ovo možda uopše ne radi.
Pogledaj uputstvo za tvoj Linux kako se postavlja shell za crontab skriptove. Ako se dobro sećam, na Oracle Linuxu se na početak crontab fajla stavlja nešto kao
CRONSHELL=/bin/bash

ali to zavisi od verzije Linuxa
[ CoyoteKG @ 25.04.2018. 16:36 ] @
hm, nije mi bas najjasnije za LIB



ako sam u folderu
/var/www/vhosts/site.com/sub.site.com/cake/console/ i okinem tu ./cake skriptu koja je u tom folderu

sta znaci vrednost pozicionog parametra 0


Uglavnom oba fajla su u istom folderu, pa mi nije jasno zašto nije pozvan cake.php bez ikakve putanje.

Kad definisem varijablu i uradim echo dobijam -bash
# LIB=${0/%cake/}
# echo $LIB
-bash


To znaci mozda da se php fajl ni ne izvrsi, jer bi po tome ispalo -bashcake.php što nema baš smisla.
Verovatno je to i problem.

Ali sam ja svakako probao da stavim full putanje u fajl pa je bilo

Code:
exec php -q /var/www/vhosts/site.com/sub.site.com/cake/console/cake.php -working /var/www/vhosts/site.com/sub.site.com/cake/app "$@"

Koliko sam izguglao i razumeo ovo na kraju "$@" znači da prosledi argumente koji su mi navedeni u cronjob, a to je valjda ono cronshell.

Inace postoji i fajl /var/www/vhosts/site.com/sub.site.com/vendors/shells/cronshell.php postoji u nekom trećem folderu, no to valjda taj php hendluje.

Baš iz razloga što u dokumentaciji sam pročitao da working path je lokacije aplikacije, a vidim da mi je varijabla APP pwd, što nije tačno. jer bi to značilo da je tu gde se nalazim, a to nije app folder.

Inace live server na kome ovo radi je Suse, neka matora verzija.
Meni je Centos 7.

Osim razlike u OS isto su i putanje. Na live Suse serveru DocumentRoot folder je /srv/www/vhost/site.com dok mi je ovamo na Centosu /var/www/vhost/site.com/sub.site.com/
[ Branimir Maksimovic @ 25.04.2018. 18:30 ] @
"E, ovo radi kada je shell bash. Po defaultu, crontab skriptovi se izvršaju u sh shelu i ovo možda uopše ne radi."

Stavio je shebang, e sad jedino ako u tom pathu sto je stavio nema basha ;0
[ djoka_l @ 25.04.2018. 18:31 ] @
http://wiki.bash-hackers.org/scripting/posparams

https://www.tldp.org/LDP/abs/html/parameter-substitution.html
[ CoyoteKG @ 25.04.2018. 20:56 ] @
hvala djoko, sad je jasnije. Dakle dobar mi echo daje taj.

Sta znaci "jedino ako u tom pathu sto je stavio nema basha" :)