Crontab is a list of commands that allows tasks (programs, scripts) to be run automatically at regular time intervals. For example, in RUT routers it is responsible for executing such services as Automatic Reboot functions, SIM Idle Protection, Scheduled SMS and others that function in a periodic manner.
The crontab can be opened for editing, adding, removing or modifying scheduled tasks. This article will provide an explanation of the crontab functionality principle and present some usage examples in hopes that it may help you configure your own crontab rules.
Crontab syntax and editing overview
Firstly, you must decide on what environment you want to use for editing. Crontabs can be edited via a Command Line Interface (CLI). RUT routers offer a range of options in that regard. For example, you can use the CLI present in the router's WebUI (Services → CLI). Or you can log in via SSH and make edits from there. The method of logging in via SSH is different on different systems: on Linux systems you can use the Terminal app log in with the command ssh root@<routers_lan_ip_address>; on Windows systems you can use the free PuTTY client.
In all cases the log in information is the same (user name: root; password: admin password (default: admin01)). The syntax of the commands is also the same, so feel free to follow the guide step-by-step whichever method you choose.
Once you've chosen your preferred environment, we can begin the overview on the syntax and editing of crontabs.
Syntax and editing
Crontab entries are stored in the /etc/crontabs/root file. You can edit that file directly with the command vi /etc/crontabs/root, but it is more convenient to edit with crontab -e, which we'll be using for all examples in this guide. -e is an option of the crontab command used for editing. Presented below is a list all options that can be used with crotab:
Usage: crontab [-c DIR] [-u USER] [-ler]|[FILE] -c Crontab directory -u User -l List crontab -e Edit crontab -r Delete crontab FILE Replace crontab by FILE ('-': stdin)
As an example, lets try the -l option that shows the contents of the crontab file:
For the sake of example, I've added a Ping Reboot rule to the router's configuration. In the figure above you can see that creating such a rule also generates an entry (encapsulated in green) in the crontab list. Let's examine this entry:
- /sbin/ping_reboot 1 22.214.171.124 NULL 2 56 5 1 0 cfg02c21d - indicates the action that is to be taken. In this case it is the /sbin/ping_reboot command with the options 1 126.96.36.199 NULL 2 56 5 1 0 cfg02c21d
- */5 * * * * - indicates the frequency at which the action is executed. It consists out of five segments: minute, hour, day of month, month and day of week in that order. A table of examples on how to specify this frequency is presented below:
|Segment||minute||hour||day of month||month||day of week||Description|
|Examples||*/5||*||*||*||*||every 5 minutes|
|12||*/3||*||*||*||every 3 hours at 12 minutes|
|57||11||15||1,6,12||*||At 11:57 Hrs on the 15th of Jan, June & Dec.|
|25||6||*||*||5||At 6:25 AM every weekday (Mon-Fri)|
|0||0||4,12,26||*||5||At midnight on the 4th, 12th and 26th of every month plus every Friday|
|5,10||9,14||*||*||0,4||At 9:05AM, 9:10AM, 2:05PM and 2:10PM every Sunday and Thursday|
There are several nuances to discuss here:
- a number indicates the exact time at which an action should occur. For example, if the number 5 was placed in the minute section, the specified action would be taken at the fifth minute of every hour.
- an asterisk (*) stands for every possible value of the relevant time unit. For example, if placed in the hour section, it would indicate that an action should be taken every hour.
- two numbers separated by a dash(-) indicate a range of numbers. For example, if 4-7 was placed in the month section, it would indicate than the specified action should take place every fourth, fifth, sixth and seventh month of a year.
- numbers separated by commas (,) indicate multiple specific time stamps at which an action should occur. For example, if 6,9,10 was placed in the hour section, the specified action would be taken at 6:00 AM, 9:00 AM and 10 AM every day. Ranges of numbers can also be separated by commas. For instance, 5-10,20-25 placed in the minute section would indicate that an action must occur every fifth through tenth minute as well as every twentieth through twenty fifth minute.
- an asterisk and a number separated by a forward slash (/) indicate a periodicity. For example, */10 placed in the minute section would indicate that the specified action should occur every 10 minutes.
- the day of week segment functions a bit differently than the others:
- 0 indicates Sunday and 1-6 indicate Monday through Saturday.
- since weekdays shift throughout the year, i.e., they are not dependent on specific days of a month, so when they are used with crontab in conjunction, the action will be executed when the current time matches the value in either field. For instance, 5 5 5 * 5 would cause the specified command to be executed at 5:05 AM every fifth day of every month plus every Friday.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html - PuTTY downloads page link