Crontab quick guide

Created by Eric Murillo on 2019-06-05

4z.com

 

 

Table of Contents

Introduction. 1

How to edit Crontab Scheduler tasks. 1

System-wide crontab scheduler. 1

Additional Crontab examples. 1

Crontab Example 1. 1

Crontab Example 2. 1

Crontab Example 3. 1

Crontab Example 4. 1

Crontab Example 5. 1

Crontab Example 6. 1

Validation. 1

Create backup.sh. 1

Add It to Crontab. 1

Screenshots. 1

References. 1

End of document. 1

 

Introduction

Every user, as well as administrator of the Linux system, very often need to execute some programs automatically on a regular basis.

For example, an administrator may need to monitor a disk usage of a system. In this case, a cron scheduler is a very handy tool to achieve this goal.

Let's say that the system administrator needs to execute /home/murilloe/backup.sh script every Sunday at 2:36 AM. In this case, the administrator would edit his crontab file as shown on the figure below:

Bash commands

$ sudo crontab -e

The format of Crontab entry is simple as it is divided into 7 fields separated by spaces or tabs. The 6th field, in this case, the username, can be omitted as it is only used by the system-wide crontab scheduler. 

The following code illustrates a single Crontab entry to allow automatic script execution every Sunday at 2:36 AM:

Crontab job

36 2 * * 7 root /home/murilloe/backup.sh

There is a very useful web that translates the crontab jobs to human expression. The screenshot below illustrates our current example and its translation.

The above example is rather self-explanatory. What may not be so obvious is the use of * sign in the above crontab entry example. The * character is a wildcard with literally translates to always. Below you can find some other basic crontab examples:

Crontab entry

Description

*/5 * * * *

Run Crontab job at every 5 minutes

0 * * * *

Execute Crontab job every hour

0 0 * * *

Execute crontab job every day at 00:00 hours

How to edit Crontab Scheduler tasks

User can edit their crontab jobs be entering the following crontab command:

Bash commands

$ crontab -u 'nameuser'-e

The above command will open your personal crontab configuration file using your default text editor. Simply make your changes and save the file. There is no need to restart your crontab as it will pick up your changes automatically. To list your crontab task enter:

Bash commands

$ crontab -l

Lastly, if you need to remove your crontab tasks execute the below command. Please note that this will remove all you crontab entries:

Bash commands

$ crontab -r

System-wide crontab scheduler

Many of the services use crontab automatically. They store their crontab scheduler configuration directly into /etc/cron.d directory. Any files located in this directory are automatically picked up and executed by the crontab scheduler. 

Linux system administrators can also take advantage of crontab preconfigured schedules directories /etc/cron.daily/etc/cron.hourly/etc/cron.monthly and /etc/cron.weekly

The crontab files located within these directories are periodically traversed and execute by crontab scheduler. So for example crontab files found in /etc/cron.daily directory are executed every day. Furthermore, if root wishes to run eg. backup.sh script once a week he will place it into /etc/cron.weekly directory.

Additional Crontab examples

Crontab Example 1

Crontab example to run the updatedb command 35 minutes past every hour.

Crontab job

35 * * * * updatedb

Crontab Example 2

Crontab example to execute /home/murilloe/backup.sh at 2:00 PM on 10th of March, June, September and December.

Crontab job

00 14 10 3,6,9,12 * /home/murilloe/backup.sh

Crontab Example 3

This crontab example runs /home/murilloe/backup.sh at 1:25 AM, 1:50 AM every Tuesday and on 15th of every month.

Crontab job

25,50 1 15 * 2 /home/murilloe/backup.sh

Crontab Example 4

This crontab example runs /home/murilloe/backup.sh at 9.00 PM every Monday, Wednesday, Friday. Please note that using names week days and month names is an extension for some crontab versions.

Bash commands

00 21 * * Mon,Wed,Fri /home/murilloe/backup.sh

Crontab Example 5

The following crontab example executes /home/murilloe/backup.sh every 5 minutes during the 5 working days (Monday - Friday), every week and month.

Crontab job

*/5 * * * 1-5 /home/murilloe/backup.sh

Crontab Example 6

This crontab example runs /home/murilloe/backup.sh script at every minute past every 4th hour on Sunday.

Crontab job

* */4 * * sun /home/murilloe/backup.sh

 

Validation

Let’s see a practical example. We want to create a backup script that regularly backs up files from your /home directory. This will work with any Linux distribution with root access.

Create backup.sh

#! /bin/bash
# Home Directory Backup Script
tar -czfv /media/backup/home-backup-`date +%d-%m-%Y`.tar.gz /home/user/

With just that line, your computer will create a tar archive at /media/backup in a file called home-backup with the current date tagged on. It will add compression and preserve folder structure and permissions as well.

Add It to Crontab

Be sure to make the script executable.

$ chmod +X /home/murilloe/backup.sh

If you're happy with that, you can move on to creating the crontablinux command as root.

# crontab -u username -e

An editor will open up for you to add your line. Schedule your task in order to be automatically executed in 1 minute.  In my case now it is 16:14 so I will add a line with 15 16 * * * meaning it will be executed at 16:15 every day. This way you can check the backup is being executed and it is working properly. Afterwards in a production mode we would change the date to the real needs. When you're done, it'll look something like this.

15 16 * * * /home/user/backup.sh

Save and exit. The script will automatically run at the time that you specified from now on.

Screenshots

Now we should see in /media/backup a new tar file with all the content from /home/user/.

Create a little report with a brief summary of what you have done and include screenshots of your script, the crontab line and the generated tar file.

If you want to learn in depth you can enter the different servers of the company and check which tasks are executed in the corresponding crontabs.

References

·         https://crontab.guru/

·         https://www.adminschoice.com/crontab-quick-reference

End of document

 

 

*   *   *

© 4z.com