Managing a server is certainly not an easy job, especially for beginners. If you are busy managing various technical matters manually, then cron jobs are an excellent solution. Cron jobs are a feature in Linux OS that can help you automate the tasks on a server easily. In this article, we invite you to learn what a crond or cron daemon is, what cronjob is, its basic commands, and how to use crontab.
Conventions
# – given commands should be executed with root privileges either directly as a root user or by use of sudo command
$ – given commands should be executed as a regular user
Table of Contents
What is Crond?
Crond is a daemon or background process designed to schedule a wide array of tasks. It is beneficial for sending emails regarding system or program statistics, performing routine system maintenance, generating backups, or executing any other scheduled task. If you are a Windows user, you should be familiar with Task Scheduler. A similar daemon is also available on MacOS, known as Launchd.
The cron daemon employs crontab files to outline the tasks and their scheduling. These files, which are in text format, specify commands to be executed at particular time intervals. Each user can have a personal crontab file, alongside system-wide crontab files that allow for user collaboration. The cron daemon checks user crontab files stored in var/spool/cron and system-wide files located in /etc/crontab and /etc/cron.d. This checking occurs minute-by-minute.
Cron checks these files and directories:
/etc/crontab
The system crontab is currently empty by default. Historically, we used /etc/crontab file to execute daily, weekly, and monthly tasks. Presently, anacron manages these tasks, which references the configuration file located at /etc/anacrontab.
/etc/cron.d/
directory that contains system cronjobs stored for different users.
/var/spool/cron
directory that contains user crontables created by the crontab command.
What is Crontab?
Crontab is the command that the cron daemon employs to manage the tables. The files used to load the cron daemon are designated as crontab files. When we execute the crontab –e command, we can edit the crontabs found in /var/spool. It is important to recognize that the files located under this directory are in a unique format, and we should not edit them directly.
For example, to list the cronjobs, you can run this command:
# crontab -l
Or, to see a user’s cronjobs, we can execute this command:
# crontab -u www-data -l
If you want to edit a cron job, you can invoke this command below:
# crontab -e
Or, to edit a cron job under user www-data, use this command:
# crontab -u www-data -e
When running the crontab command for the first time, you must choose your favorite file editor. The command will return this output:
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/mcedit
4. /usr/bin/vim.tiny
Choose 1-4 [1]:
You can type the number, then hit ENTER.
What is Cronjob?
Cron job is a command line tool for executing scheduled tasks automatically. The command, better known as cron, works on UNIX-based operating systems such as Linux or Ubuntu. We use cron to run several tasks periodically, either every few minutes, hours, days, or dates at fixed intervals.
The cron command usually automates server maintenance or system administration, such as downloading files from the Internet. According to its function, cron is very suitable for repetitive tasks.
We generally use cron to run backups, monitor disk space, generate backups, delete files, and run system maintenance periodically based on a fixed time unit set by the administrator.
Each crontab file consists of two components, namely time and command. Collectively hey are called cron jobs. The time format has five fields that you must fill in:
Minute — The command execution minute field, written with numbers 0 to 59.
Hour — The command execution hour field, written with numbers 0 to 23.
Day — The command execution date field, written with numbers 1 to 31.
Month — The command execution month field, written with numbers 1 to 12.
Weekday — The command execution day field. Days start with Sunday which is represented by the number 0.
For example, if you want to schedule a /opt/backup-mysql.sh cron job every day at 02.00 AM, then the cron command script is:
0 2 * * * /opt/backup.sh
In addition to numbers, some symbols used in using cron jobs are:
Asterisk or star sign (*) — represents all values of a field. For example, an asterisk in the minute field means that the command in the crontab is run every minute.
Comma (,) — is used to enter two or more values in one field. For example, the user wants to run a command at 7 am and at night every day.
Hyphen (-) — is used if you want to specify a time range in a field. For example, if the user wants to run a command from Monday to Wednesday every week.
Slash or forward slash (/) — its function is similar to a comma. However, the forward slash is used to specify more complex time settings. For example, when the user wants to automate a command every 10 minutes from 11.20 am to 11.50 am.
Last (L) — Last (L) indicates a specific day in the last week of a month. For example, 5L means the last Friday.
Hash or pound sign (#) — this sign is used when you want to specify the week the command is executed. In its use, this sign is followed by the numbers 1 to 5 as an indicator of the week. For example, 3#5 means Wednesday in the fifth week.
Weekday (W) – use this sign to execute commands on the nearest working day. For example, January 1st falls on a Sunday, then the cron job will be run on Monday, January 2nd.
Question mark (?) – this operator is used if there is no specific value in the Day of the month and Day of the week fields.
In addition to a series of scripts or crontab file syntax in the previous point, you can add some special strings to the cron job command.
To use it, type @ followed by a string option like the cron job example below:
@hourly – Cron jobs are run every hour.
@daily or @midnight – Cron jobs are run every day at 12 midnight.
@weekly – Command to schedule a cron job once a week, on Sunday midnight.
@monthly – Cron jobs will be executed once a month on the 1st.
@yearly – Special string to run the cron job command once a year on January 1st at midnight.
@reboot – Schedules a cron command every time the VPS hosting server restarts.
That’s it! You have learned everything you need about Crond: Daemon to Execute Scheduled Commands and understand how to add a cronjob.
Of course, if you are one of our Linux VPS Hosting customers, you don’t have to understand what is cron and how to add a cronjob. You can contact us by submitting a ticket and sit back, and relax. Our admins will help you manage your crontab, like adding or deleting a cronjob. Our experienced system administrators are available 24×7 and will take care of your request immediately.
If you liked this post about Crond: Daemon to Execute Scheduled Commands, please share it with your friends or leave a comment below. Thanks.