How to run scripts via cron jobs

cPanel
If you want to run scripts on a scheduled basis, keep in mind the following: 
 
1. Only our Cloud Turbo package support Cron Jobs
 
2. If you do not add >/dev/null 2>&1 at the end of the command, the server will send an email notification each time a cron job runs. While it may be useful for testing purposes and monitoring, if not attended, such emails will be accumulating in the email account specified in the Cron emailfield, and if it is one of your cPanel email accounts, they might cause issues with inodes usage. 
 
3. Use a custom php.ini for the cron jobs:
 
i.e.   /usr/local/bin/php -c customphp.ini bin/magento cron:run
 
4. To bypass disable_function:
 
i.e.  /usr/local/bin/php -d disable_functions= bin/magento cron:run
 
 
NOTE: If your script does not generate any output, it is possible that notification emails are not sent either, however, the cron job is working. 
 
In order to set up a cron job, go to cPanel > section Advanced > Cron Jobs menu: 
 




General cron job format is as follows: 

[path to environment] [Path to script] [Script parameters] 


For example, if you want to run a PHP script located in the public_html directory, the correct cron command will be: 

/usr/local/bin/php /home/cPaneluser/public_html/yourscript.php 


or if you want to use a relative path (different commands are divided by “;”): 

cd /home/YourcPuser/public_html/; /usr/local/bin/php yourscript.php


For Python and Perl scripts, there is no need to use a full path to the environment, the environment interpreter directive will be enough on shared servers. 

python /home/YourcPuser/public_html/yourscript.py

perl /home/YourcPuser/public_html/yourscript.pl



Alternatively, you can just use curl request as the cron job command for the same purpose: 

curl “http://yourdomain.com/script.php?argument1=arg1&argument2=arg2” 
curl “http://yourdomain.com/script.py” 
curl “http://yourdomain.com/script.pl”


However, unlike the first method, curl-based cron jobs will work only if URLs specified in curl requests are resolving, e.g., DNS records for the domain are correct and running. 
You can find more information about the curl tool usage here

You can also check if a cron command is executed correctly by running it in the command line via SSH

We will use this simple summing script with external parameters and run it using a web browser, Cron and SSH:




First, let's just run it in the browser pulling arguments after the script name and “?” directive:

http://nctest.info/script.php?arg1=2&arg2=3 



Now, in order to get the same result via cron we will use this command and add parameters after the script path: 

/usr/local/bin/php /home/nctest/public_html/script.php 2 3 


The email notification contains the same output


In CLI, you can run both cron commands and CURL requests, just ssh to your account and input them like shown below: