Cron job
-
I am starting to do some testing with Omega2 using php, I have installed PHP7 and PHP7-cgi and using the browser, I can go to the PHP file at /192.168.1.190/php/test.php and run it and it does work (Turns a led on) once it is executed. BUT when trying to use a cron job, it does nothing.
I am using the following :
5 13 * * * /www/php/test.php > /tmp/test.log
to run it at 1:05pm and send the output to test.log
and also making sure the test.php is chmod 755
then do a restart of the cron:
/etc/init.d/cron restart
and wait, nothing, not even the log file, it was created but 0 bytes.
Maybe I am missing a step?
Anyone has an idea of why is not runing the php file?
Thanks in advance
-
tried running from the command line and got the following:
root@Omega-AA00:/# /www/php/test.php
/www/php/test.php: line 1: can't open ?php: no such file
/www/php/test.php: line 3: include: not found
/www/php/test.php: line 5: syntax error: unexpected "("Thanks again
-
What happens when you run this on the command line?
crontab -l
Does it return your crontab entry?
-
@Manuel-Godinez
Did you put a "#" on 1st line, then the cron command as the 2nd, and another "#" on the 3rd?
-
From another post on cron jobs.
@Brad-Buskey said in Cron trouble:
* * * * * command to be executed - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59)
I also keep my crontab info in a text file in /root. Whenever I make a change, or want to add to it, all I need to do is edit the text file, then run the following:
crontab /root/crontab.txt
I always then verify it is there with
crontab -l
Then, you can restart crontab with
/etc/init.d/crontab restart
For me, this is easier and allows for cut/paste.
My crontab is set for ever 20 minutes.
*/20 * * * * /smb/scripts/phpweather.sh
-
@Manuel-Godinez said in Cron job:
tried running from the command line and got the following:
root@Omega-AA00:/# /www/php/test.php
/www/php/test.php: line 1: can't open ?php: no such file
/www/php/test.php: line 3: include: not found
/www/php/test.php: line 5: syntax error: unexpected "("Thanks again
please show us at least your script line 1-5
and i believe in /www/php/ you can't execute php?!
-
@Manuel-Godinez said in Cron job:
tried running from the command line and got the following:
root@Omega-AA00:/# /www/php/test.php
/www/php/test.php: line 1: can't open ?php: no such file
/www/php/test.php: line 3: include: not found
/www/php/test.php: line 5: syntax error: unexpected "("Thanks again
Didnt see this post, was replying to the one on the cron.
PHP is not a shell scripting language, it is a web scripting language. you need to somehow invoke the webserver from the command line. I dont know if that is possible.
May be better to convert the PHP code to something other than a webscript. Maybe SH or Python.
-
Thanks Brad and Luciano and Don,
Guess going to have to learn another language
-
Nope, I just tried creating a .php with a simple command to call a shell script, and the ASH shell could not "run" the php file. It is not a shell executable scripting language, it needs a web interpreter in order to run, and has to be run from a browser.
You will want to convert whatever the PHP page is doing into a script language the shell can process.
-
I was looking at the docs and they do mention the php-cli to be able to run from the command line but it works when I doit manually, but again, when using the cron it doesn't. So you think SH or Python would be easier for a PHP guy to grasp the basics?
-
@Manuel-Godinez What does
crontab -l
return when you run it on the command line? I dont think your crontab is set up right.
-
It does return the exact cron job:
5 13 * * * /www/php/test.php > /tmp/test.log
-
Ok. I am now trying Python to run the cron script. I have done the following steps:
1 - Upgraded to latest firmware b157
2 - opkg update
3 - opkg install python
4 - opkg install python-light pyOnionGpio
5 - did a reboot
6 - got the following code into a filename called test2.py in the root folder :import time
import onionGpiogpioNum = 18
gpioObj = onionGpio.OnionGpio(gpioNum)set to output
status = gpioObj.setOutputDirection(0)
alternate the value
loop = 1
value = 0
while loop == 1:
# reverse the value
if value == 0:
value = 1
else:
value = 0# set the new value status = gpioObj.setValue(value) print 'GPIO%d set to: %d'%(gpioNum, value) time.sleep(5)
7 - chmod the test2.py to make it executable. 0744
8 - Now I go to the crontab -e and inserted the following line:12 6 * * * /test2.py > /tmp/test.log 2>&1
9 - restarted cron
10- waiting to execute
11 - got this at test.log :/test2.py: line 1: import: not found
/test2.py: line 2: import: not found
/test2.py: line 4: gpioNum: not found
/test2.py: line 5: syntax error: unexpected "("So I am guessing for some reason, it didn't find the import file onionGpio.py but I checked already and it is in the location it is suppose to be which is /usr/lib/python2.7/
I am wondering if I missed a step?
Thanks again for all your help
-
In the cron aren't you missing the python call?
So change to something like this, depending where test2.py is located12 6 * * * python /test2.py > /tmp/test.log 2>&1
-
Thank you Costas!! That was it. That should be it now. And thanks everyone else too for their help.
-
@Costas-Costas Thank for the help with Cron! Left out the python call too in my cron scrip.
-
@Brad-Buskey Thanks for the detailed help with Cron. Tried for hours, if not days, to try to get it setup in my Omega2+.