Home » Ubuntu Crontab

Ubuntu Crontab

Sometimes, we don’t wish a process to execute at a default time set via the operating system, but we wish to set the time for the process to execute ourselves. To do it, we apply the cron daemon in Ubuntu which implements in a similar style as the task scheduler in the Windows operating system. We can describe the time at which the process like a backup or maintenance job should be run using the cron daemon. This way, we can automate the tasks to execute later without the manual interventions.

In this article, we will explain how we can do it with Crontab on Ubuntu.

Introduction to Crontab

A crontab is a command list that is used to execute on a regular schedule and also the command name used for managing that list. It stands for “cron table” due to it applies the cron job scheduler tasks.

Cron itself is titled after “Cronos”, which is a Greek term for time. It is a system process that will perform several tasks automatically for us according to the set schedule. A schedule is known as crontab which is the name of a program used for editing that schedule.

In other words, crontab is a program used for installing, uninstalling, or listing the tables used for driving the cron daemon within the Vixie Cron. The cron file includes instructions to a cron daemon of the normal form: “execute this command on this date at this time”. All users can have their crontab, and hence these are files inside the /var directory, and they aren’t intended to be directly edited. A crontab file is a config file that represents shell commands to execute for a particular schedule periodically.

If the option, i.e., -u is given, it describes the username whose crontab is to be pulled. Crontab considers ‘your’ crontab, i.e., the person crontab running the command if the option isn’t given.

Note: su can complicate crontab, and if we are executing in su, we should always apply the -u option for the sake of safety. Cron file is used for installing a new crontab from a few standard input or named files if the ‘-‘ pseudo-file name is given.

Format of Linux Crontab:

Syntax of Crontab:

Some of the important fields, their description, and permitted values are mentioned below:

  • MIN (Minute Field)- 0-59
  • HOUR (Hour Field)- 0-23
  • DOM (Day of Month)- 1-31
  • MON (Month Field)- 1-12
  • DOW (Day of Week)- 0-6
  • CMD (Command)- command to be run.

Describing more than one value inside a field

  • The operator i.e., an asterisk (*) describes every possible value for any field.
    For example, every day or every hour.
  • The operator, i.e., comma (,) describes a value list.
    For example, “1,3,4,7,8”.
  • The operator, i.e., dash (-) describes a value range.
    For example, “1-6” which is the same as “1,2,3,4,5,6”.
  • The operator, i.e., slash (/) can be used for skipping a given value number.
    For example, “*/3” inside the field of hour time is the same as “0,3,6,9,12,15,18,21”; “*” describe ‘every hour’ but the “/3” defines only the 1st, 4th, 7th,…. and such values provided by “*” are applied.

Crontab Tags

Some of the tags and their description are as follows:

  • -h, –hash
    It describes the hash to apply for password hashing. This tag is only related to the action, i.e., create. The hash string is approved to libgcrypt, so every hash is supported which is accepted by gcrypt.
  • -c, –cipher
    It sets the string of cipher specification. It is usually “aes-cbc-plain”. It applies “aes-plain” for pre-2.6.10 kernels because they do not understand the new strings of cipher spec. It also applies “aes-cbc-essiv-:sha256” for using ESSIV.
  • -y, –verify-passphrase
    It twice queries for passwords. It is useful if creating a mapping for the very first time or if executing luksFormat.
  • -d, –key-file
    It applies files as the key material. The key material imported in key files by -d option with LUKS that are always used to exist passphrase. If we wish to set a fresh key by a key file, we need to apply a positional arg to luksAddKey or luksFormat.
  • -s, –key-size
    It sets the size of the key in bits. It is usually 128, 192, or 256. It can be used for luksFormat or create, all other actions of LUKS will avoid this flag because the key size is described by the partition header.
  • -b, –size
    It forces the size of an underlying device inside the sectors.
  • -o, –offset
    It starts offset inside the backend device.
  • -p, –skip
    It determines how many sectors of data (encrypted) to skip in the starting. It is different from the option, i.e., offset.
  • –readonly
    It sets up the read only mapping.
  • -i, –iter-time
    It specifies several microseconds for spending with PBKDF2 password processing. It is only related to the key setting operations of LUKS as luksAddKey or luksFormat.
  • -q, –batch-mode
    This option doesn’t ask for confirmation. It is only related to luksFormat.
  • -t, –timeout
    It specifies seconds for waiting before timeout. It is related every time any password is asked such as luksAddKey, luksFormat, luksOpen, or create.
  • –align-payload=value
    It specifies align payload at a value boundary of 512-byte sectors. It is related to luksFormat. If our block device lives on the RAID, it is helpful for aligning the file system at the complete striped boundaries so it can get the benefit of the geometry of the RAID. The payload is by default aligned at the 8-sector boundary.
  • –version
    It displays the version.

Crontab Actions

It can create a mapping using <name> backed with a device. It has several options such as –readonly, –skip, –offset, –key-size, –key-file, –verify-passphrase, –cipher, –hash, etc. Some of the crontab Actions and their description are as follows:

  • remove<name>: It can remove a previous mapping <name> and it has no option.
  • status<name>: It can report the mapping <name> status. It also has no option
  • reload<name>: It changes an enabled mapping <name>. It has similar options like create.
  • resize<name>: It can resize an enabled mapping <name>. The –size option must be included in this action.

Task Scheduling Using Crontab in Ubuntu

We need to proceed below to do it.

  • First of all, we need to launch the terminal window by pressing the shortcut keys, i.e., Ctrl+T, pressing the terminal icon positioned on the taskbar, or finding the terminal within the search bar and clicking on the enter
  • Now, we need to enter the crontab command inside the terminal window and click on the enter button for opening the crontab file.
    The command is as follows:
  • The terminal window will ask us to choose an editor for opening this file as soon as we will click on the enter button.
  • Select the second option and click on the enter button to choose the nano editor due to it’s always good for opening system files using the nano editor.
  • We will find that our terminal window has modified itself into a nano editor screen and our crontab file has opened in the editor the moment we will press the enter button. The screen will be displayed as follows:
  • We can scroll down this file by using the down and up arrow keys. Every line specified in this file that begins with a ‘#’ indicates a comment. If we wish to include a new task for getting scheduled at our described time, then we should write it without any #
  • For instance, if you wish to execute a backup of every user account at 5:00 a.m. every week, then we should enter the following command:
    0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
    The result will be as follows:
    • Once we have done including our tasks, we just need to click on the Ctrl+O shortcut keys to save our crontab file inside the nano editor. It will display the changed status in the top right corner and will prompt us for the name of a file to write. We just need to click on the enter button to choose default.
    • We will be returned to our regular nano editor screen after pressing the enter button. Now, we just need to click on the Ctrl+X shortcut keys to exit from the nano editor after saving our files.
    • As soon as our nano editor will close, we will be directed to our original command line window. Here, we will see find the message, i.e., “crontab: installing new crontab” which is a representation to tell that our crontab file was successfully saved.
      The message will be shown as follows:
    • Now, every user account will face a backup at 5:00 a.m. every week once we are done with it.

Common uses of cron

The cron service can be used for scheduling many obvious things like regular backups that appear daily at 2:00 a.m. It can also be used for less obvious things. Some of the primary uses of cron are as follows:

The system times (the operating system time) on several computers are set with the NTP (Network Time Protocol). It doesn’t set the hardware time while NTP can set the time of the system which can drift. Cron is used for setting the hardware time according to the system time.

There is also a Bash program available that makes a new “message of the day” (or MOTD) on all computers. It includes information like disk usage that must be current to be useful. Various system services and processes like RootKit Hunter, logrotate, and, Logwatch apply the cron service to everyday run programs and scheduled tasks.

Note: The crond daemon is a background service that activates the functionality of cron.

The crown service inspects for files inside the /etc/anacrontab file and the /etc/cron.d and /var/spool/cron directories. The contents of these files specify crown jobs that are to be executed at many intervals. The individual files of user cron are positioned inside the /var/spool/cron directory, and system applications and services generally add the files of cron job in the directory, i.e., /etc/cron.d.

Scheduling Tips

Sometimes the crontab files look rather random. Cron job scheduling can be challenging especially when the jobs increase. The crond service thinks that the host system executes every time. It means that if the system is turned off at a time when cron jobs were set up to execute, they will not execute until the time they’re scheduled. It might cause issues if they are demanding cron jobs. They are fortunately another option to run jobs at ordinary intervals, i.e., anacron.

Crontab Options

Some of the important crontab options are listed and mentioned below:

  • We can use the -e option for installing and updating jobs in crontab:
  • We can use the -l option for listing the entries of crontab:
  • We can use the -r option for uninstalling the job from crontab:
  • We can use the -i option for confirming job uninstallation in crontab:
  • We can use the -s option for adding SELINUX security to the crontab file:
  • We can use the -u option and mention the username for editing crontab of other users:
  • We can use the following option for listing crontab entries of other users:

Examples

A few examples of Crontab are discussed below:

  • To execute /usr/bin/sample.sh every day at 12:59 and supress the result:
  • To execute sample.sh at 9pm (21:00) everyday:
  • To execute sample.sh at 1am (01:00) every Tuesday to Saturday:
  • To execute sample.sh at 07:00, 9:30, 13:30, and 15:30:
  • To execute sample.sh daily at 02:00 a.m.:
  • To execute sample.sh two times in a day at 5pm and 5am:
  • To execute sample.sh every single minute:
  • To execute sample.sh at 5pm every Sunday:
  • To execute sample.sh every 10 minutes:
  • To execute sample.sh on some selected months:
  • To execute sample.sh on some selected days:
  • To execute sample.sh every month’s first Sunday:
  • To execute sample.sh every 4 hours:
  • To execute sample.sh every 30 seconds:
  • To execute sample.sh every Monday and Sunday:
  • To execute more than one job with single icon:
  • To execute sample.sh hourly:
  • To execute sample.sh daily:
  • To execute sample.sh weekly:
  • To execute sample.sh monthly:
  • To execute sample.sh yearly:
  • To execute sample.sh to system reboot:

You may also like