If you’ve never set up a cron job before it can be a little daunting to do so when asked.
As I hadn’t done a cron job for quite some time I had to remember all the processes involved in getting a task set up and being able to check the task was working. On my Ubuntu 13.10 nginx box I went through the following steps and hopefully it helps clear the confusion on how to set it up on your server.
After installing the necessary stuff according to InfiniteWP one of the final tasks will be enabling a cron task on your server. I’m assuming that you have access to your server so once you’ve logged into it, navigate to:
$ cd /etc
Once here, look at the directory by running the
ls command and see if you spot the following files and directories:
cron.d cron.daily cron.hourly cron.monthly crontab
System’s PHP check
Now before we get to adding stuff let’s make sure your server CAN run PHP on the command line. For this run the following:
$ php -v
If you receive an error that apt-get cannot find or will need to install php, then you need to install the
php5-cli application, hence run:
$ sudo apt-get update $ sudo apt-get install php5-cli
Once you’ve checked to make sure you can run
php commands from the command prompt you can then safely move to the next step.
InfiniteWP cron setup
To get InfiniteWP to work you will need to navigate within the
cron.d folder and to create a file that you will be able to identify for InfiniteWP’s cron tasks for your WordPress installs. I’m going to create a file called
iwp, but you can call it whatever you want.
$ nano iwp
Within this file append the necessary information to create a cron task:
# for InfiniteWP's cron */20 * * * * root php -q -d safe_mode=Off /directory/to/wordpress/iwp/cron.php >/dev/null 2>&1
Be sure to change the
/directory/to/wordpress/iwp/cron.php to whatever the full path location is to your InfiniteWP’s install is.
But what does all this stuff mean?
- The first segment
*/20means that the following task will run at every 20 minute interval.
- The next segment
*means that it will run every hour.
- The next
* * *(three asterisks) mean every day of the month, every month, every day of the week. Obviously if you wanted to change the frequency of how often you want the cron task to run you would modify these variables. I’d highly encourage you to read more about cron jobs by going to the manual here.
- After all the asterisks we then set who will be the user running this task, in this case I’m setting it as
root, followed by the command I’d like to be able to run.
- In the case of InfiniteWP we run a php command in quiet mode with the following detail of keeping
safe_mode offrunning the php file found at the location of
stdoutoutput into the garbage bin.
Once you’ve saved your
iwp file you’ll want to reload cron (just for safe-keeping, even though cron should be able to grab the new commands) by running:
$ sudo service cron reload
If you wanted to make sure cron indeed is running and that it is working you could similarly run:
$ sudo service cron restart
Which should output something like:
cron stop/waiting cron start/running, process 15910
The final check all is working correctly on our end is to check the
/var/log/syslog file to see that it has worked. To do this, possibly wait for 20 minutes (or however long you set your cron job to run for) and run this:
$ grep CRON /var/log/syslog
This should output something like this:
Jun 24 01:20:01 SERVER_NAME CRON: (root) CMD ( php -q -d safe_mode=Off /directory/to/wordpress/iwp/cron.php >/dev/null 2>&1)
This output shows you the timestamp of when the process ran and who ran it.
In this post you have learnt how to create a cron task for running InfiniteWP and how to check your cron tasks are working.