Linux is an extremely popular, open source operating system that can be customized to fit a developer’s workflow preferences. Teams operating on Linux can take advantage of features for task scheduling and workflow automation.

Cron jobs are used to schedule tasks on Linux systems through a command line interface. This tool is both robust and accessible and can be extremely helpful for system administrators. Tasks can be scheduled to run at a specific time, down to the minute, offering precision confirmation not possible with manual strategies.

Understanding Cron Jobs

Cron is a job scheduling feature available in Unix systems. The cron daemon is running in the background, enabling the ability to schedule cron jobs.  

Cron jobs are used to execute tasks at a scheduled time, like by day of the week, day of the month, month of the year, every weekday, or by the minute. Through the command line, system administrators can set up jobs for performing actions like data backups, email notifications, and more. These tasks can be configured to run when events occur, like running security checks at system startup.

While cron is typically already installed on Linux machines, users can install cron by opening a preferred terminal and updating packages listing using the following command: sudo apt-get update. This command is for Ubuntu or Debian distributions.

Crontab File 

Cron table, or crontab, is a text file, or crontab file, that outlines the schedule for the cron jobs. Crontab files are either individual user crontab files or system-wide crontab files.

Crontab files include the current user’s name and location, which varies by operating system and integrated software. Red Hat distributions like CentOS, for example, store crontab files in the /var/spool/cron directory. In Debian and Ubuntu, on the other hand, a user’s crontab files are stored in the /car/spool/cron/crontabs directory.

System administrators are the only people who can edit system-wide crontab files, which include /etc/crontab file and scripts inside the /etc/crond directory. 

Syntax for the Crontab Command

The syntax for cron operators and crontab entries is important for getting the most benefits from cron jobs. Each line in a crontab file has six fields, each separated by a space and a crontab entry. 

With cron syntax, the first five fields can represent one or more values, separated by a comma, or ranges of values, separated by a hyphen.  Let’s take a closer look at the crontab operators:

An asterisk indicates any value or always, while a comma specifies a list of values for repetition. The weekday (W) operator specifies the weekly and is allowed for the day of month field. 

Additionally, there are cron schedule macros, like reboot, for setting  common intervals for scheduled tasks. The fastest a cron job can be executed is once every 60 seconds, and cron jobs cannot be distributed to multiple network machines.

Environment Variables

The cron daemon sets several environmental variables automatically that involve the default path, default shell and home directory. 

  • The default path is: PATH=/usr/bin:/bin.
  • The default shell is:  /bin/sh. The default shell can be modified using the SHELL crontab variable. 
  • Cron uses the command in front of the current user’s home directory. The HOME environment variable can be set in the crontab.

Granting Crontab Permissions

The /etc/cron.deny and /etc/cron.allow files hosts a list of usernames to control which users have access permissions to use a system’s crontab command. 

Only the /etc/cron.deny file exists by default. If this file remains empty, all users will be able to use the crontab command. To deny users access permissions, add usernames to the cron.deny file. 

The /etc/cron.allow file has to be manually created and only the root users and users who are listed in this file have the ability to use the crontab command. 

If neither of these files exist, only users with system administrator privileges will be able to use the crontab command.

Schedule Tasks in Linux with the Crontab Command

Among the possible Linux commands, the crontab command is used to install, view, and modify crontab files in Linux systems. Here are some common crontab commands for Linux:

  • crontab -e Modify or create a crontab file.
  • crontab -l View contents of a crontab file.
  • crontab -r Remove a crontab file.
  • crontab -u <username> Edit another user’s crontab file. This requires necessary permissions.

When viewing a list of crontab files, a series of asterisks will be displayed, and might look something like this: 

* sh /path/to/

In the above example, sh indicates that the shell script is a bath script, and the latter part: /path/to/ specifies which path to script.

Advanced Task Scheduling with Redwood

Redwood offers advanced task scheduling through event-driven Linux job scheduling software.  Workload automation can be implemented by scheduling end-to-end workflows with Redwood RunMyJobs.

With guaranteed performance through SLA monitoring, Redwood can provide email notifications and supports more than 25 scripting languages including PowerShell and Bash. Syntax highlighting and parameter generation help teams work smarter and more efficiently. 

To get a better understanding about Linux job scheduling, Redwood offers numerous tutorials to help teams with internal training.

Frequently Asked Questions

What is the Linux command to schedule a cron job?

The Linux command to schedule a cron job in Linux is the crontab command. The following command is example of using cron to schedule a cron job for running a script every day of the week at midnight:

0 0 * * * /path/to/script/.sh

Optimize Linux job scheduling with Redwood RunMyJobs to optimize end-to-end business processes.

What does a cron configuration file look like?

An example of what a cron configuration file might look like can be seen below:

$ sudo systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2022-11-11 15:13:12 -03; 1h 17min ago

With Redwood’s batch scheduling software, teams can easily manage and scale cross-platform jobs.