Grid Guides

Explore How System On Grid Can Work For You

Grid Guide Topics

How to Operate Cron to Automate Functions on a VPS

Table Of Contents


    ## Table of Contents

    – [Introduction](#introduction
    – [Installing Cron](#installing-cron
    – [Cron Configuration](#cron-configuration
    – [Restricting Cron Access](#restricting-cron-access
    – [Conclusion](#conclusion

    ## Introduction

    The standard procedure to run functions on Linux machines at the background is using [Cron jobs](https://en.wikipedia.org/wiki/Cron. They are common to be useful for organizing functions on the VPS and also for automating different conservation-related jobs. ‘Cron’ is fundamental, a daemon/program, which executes in the background. The conventional for the different jobs so that the actions run in a configuration file is called ‘crontab’.

    ## Installing Cron

    Practically all distribution will have some form of default Cron installed. Yet, if you are with a system it doesn’t exist, now you can install by using below commands.

    ## For Ubuntu/Debian:

    “`
    sudo apt-get update
    sudo apt-get install cron
    “`

    ## For CentOS/Red Hat Linux:

    “`
    sudo / sbin / chkconfig crond on
    sudo / sbin/service crond start
    “`

    ## Cron Syntax

    At below you have an example task to run.

    “`
    5 * * * * curl http://www.google.com
    “`

    The syntax for some other different jobs you will be placed at crontab it look ’s aggressive. It will actually be very concise and easy-to-define if you happen to know how to do it.
    The command is crippled down into:

    ### Schedule
    ### command

    Basically, the command could be run on any command line. The arranged components of the syntax divided into five different choices for arranging the following order:

    ### minute
    ### hour
    ### day of the month
    ### month
    ### day of the week

    ## Examples for Cron

    List of examples for some similar schedules you might see while configuring corn.

    For every minute command execute:

    “`
    * * * * *
    “`

    For every 12 minutes command executes on an hour:

    “`
    12 * * * *
    “`

    For every 15 minutes command executes you can also use different options for different placeholder:

    “`
    0,15,30,45 * * * *
    “`

    For everyday command execution at 4:00 am, you can use:

    “`
    0 4 * * *
    “`

    To execute a command every Tuesday at 4:00 am, you can use:

    “`
    0 4 * * 2
    “`

    You may also use division at your schedule, instead of listing out 0,15,30,45, you may also using below.

    “`
    */4 2-6 * * *
    “`

    Note: This command runs in between 2:00 am to 6:00 am as we placed the range “2-6”

    ## Cron Configuration

    On the VPS, after where you settle down with a schedule and then you have an idea about the job, you would like to run for that you need an area to place it in your program to able to read it.

    Now you are going to choose some different places, although the most common is the user’s crontab. If you remain, this particular file which holds the no. of jobs through the Cron is going to execute them.

    For every user, the files are located at ‘/var/spool/cron/crontab’, even they are not able to modify directly, here it’s better to use the crontab command.

    By using the below command you can modify your crontab

    “`
    crontab -e
    “`

    It will open a text editor where you may input your schedule on a new line for each job.

    To open your crontab but you can’t modify it, use the below command:

    “`
    crontab -l
    “`

    To delete your crontab use the command below:

    “`
    crontab -r
    “`

    If you appeared to be a privileged user, you may edit a different user’s when established.

    “`
    crontab –u -e
    “`

    For each Cron job that executed, where user email address linked along with that user only get the output through the same email. where you directed into expected into the log file or ‘/dev/null’.

    Unless it provides mail, should be manually specified to ‘MAILTO’ setting at the top of crontab. Through the home directory, the Cron binary should be placed by using the below example.

    “`
    Crontab –e
    “`

    Then, edit it like below

    ![crontab](https://grid.media/assets/images/crontab-02132019.png

    This particular job output is shown as same:

    “`
    “Run this command every minute.”
    “`
    The belonging output is going to email for every minute to the email address which you specified.

    As we mentioned but, it is an ideal situation you may also pipe the output into an empty location or to your logfile to get prevent email using for output.

    Follow the below to add logfile:

    “`
    * * * * * echo ‘Run this command every minute’ >> file.log Note “>>” adds to a file.
    “`

    For suppose if you want to pipe into an empty location use ‘/dev/null’. Which belongs to the PHP script and executed in the background.

    “`
    * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
    “`

    ## Restricting Cron Access

    To restrict the access Cron is very simple with the ‘/etc/cron.allow’ and ‘/etc/cron.deny’ files.

    To allow or deny a user then you just simply place their username at one of those files which need a permit. Most of the Cron programs will assume that all users have access to Cron except if any one of these exists.

    “`
    echo ALL >>/etc/cron.deny
    echo tdurden >>/etc/cron.allow
    “`

    Now, you may remove all users by using ‘all’ to the ‘deny’ file. Next, attach a username to the allow file. To execute the Cron jobs add the user access.

    ## Special Syntax for Cron

    To make administrating little easier you may add no. of shorthand commands which you may use in your crontab. It is a regular shortcut for the equivalent numeric is specified.

    “`
    @hourly – Shorthand for 0 * * * *
    @daily – Shorthand for 0 0 * * *
    @weekly – Shorthand for 0 0 * * 0
    @monthly – Shorthand for 0 0 1 * *
    @yearly – Shorthand for 0 0 1 1 *
    “`
    you need to run the command ‘@reboot” at the startup

    Note: Not all Cron programs will define this syntax, especially old versions need to double-check this works so you don’t calculate on it.

    In order to have a job which executes on startup, after modifying your crontab file then insert a line in the file which as shown below

    “`
    @reboot echo “System startup”
    “`

    This particular command runs the output and shared with the user specified mail in the crontab.

    ## Conclusion

    Now you have an idea of how to operate Cron jobs and you’re done automating your functions using Cron on VPS.