I would like to execute a cronjob for a routine task every X hours. The cronjob basically executes a shell script which in turn uses a WGET command to download files from a remote server. However, before I run this shell script I want the cronjob to execute a php script which will check whether the update’s available (there’s no point in wasting BW and downloading the same file over and over again) and if it is, it should pass on the update URL to the shell script which in turn uses the WGET command.
The cronjobs are set from the hosts Admin Panel. There is no other way around it. Being a shared hosting service, I am not allowed access to other functions on PHP which might do the task for me either.
Is this possible? I am Linux illiterate. I have installed a few RPM’s on Fedora but that’s about it. Please bear with me. Thanks!
Just pass
--timestampingto your wget command.Alternatively if you are more familiar with PHP’s ways you can check this question for a usable method.
Use a curl
HEADrequest to get the file’s headers and parse out theLast-Modified:header.To use a php script as a regular command line executable use this as a starting point:
Save the file without the .php and tuck it somewhere that your server won’t serve it.
Next, set the executable bit so that you can execute the script like a regular program
(
u+xin the following command means grant the [u]ser e[x]ecute privileges forhelloworld, andchmodis the command that unix variants use to set file permissions)Omit the $ in the following sequence, as it represents the command prompt
$ chmod u+x helloworldnow you can execute your commandline script by calling it in the bash prompt:
From here you can get the full path of the executable script:
And now you can install the cronjob using the path to your executable script.