cron is a background process under Linux that is used to perform some tasks regularly. Because I am using Ubuntu, all the commands in this article are only guaranteed to be valid under Ubuntu, but other systems should be similar.
If you want cron to perform the tasks you specify, you must first edit the crontab file. crontab is a text file used to store the commands you want to run. You can use the following command
crontab -e
to open the crontab file belonging to your user. The first time you use this command, you will be asked to choose a text editor. I chose vim. The selected editor can also be changed using the
select-editor
command. There are enough hints in the command line for this point, so I won’t go into details.
The crontab file after opening looks like this:
# m h dom mon dow command
*/2 * * * * date >> ~/time.log
Second The line is a periodic task I wrote for testing. It means to execute the date >> ~/time.log command every two minutes (record the current time to the time.log file). You can add it to your crontab, then save and exit.
After saving the crontab, we need to restart cron to apply this scheduled task. Use the following command:
sudo service cron restart
The following briefly explains the meaning of each line in crontab. Each line in the crontab represents a regularly executed task and is divided into 6 parts. The first 5 parts indicate when the command is executed, and the last part indicates the command executed. Each section is separated by spaces, and no other section can use spaces except the last section (command) which can use spaces internally. The first 5 parts represent: minutes, hours, days, months, and weeks. The value range of each part is as follows:
minutes 0-59
hours 0-23
days 1-31
Month 1 - 12
Week 0 - 6 0 means Sunday
In addition to these fixed values, you can also use asterisks (*), commas (,), and slashes (/) to Indicates some other meanings:
Asterisks represent any value, such as filling in the hour part * represents any hour (every hour)
Comma can allow multiple values to be filled in one part, such as the minutes part Fill in 1,3 to represent one minute or three minutes
Slashes are generally used in conjunction with * to represent how long it takes. For example, fill in */2 in the hour part to represent every two minutes. So there is no difference between */1 and *
*/2 can be regarded as any value divisible by 2.
The following are some examples (the command part is omitted):
* * * * * # Execute the task every one minute
0 * * * * # Execute the task at 0 o'clock every hour , such as 6:00, 10:00
6,10 * 2 * * # Execute a task at 6 minutes and 10 minutes every hour on the 2nd of every month
*/3,*/5 * * * * # Execute the task every 3 minutes or 5 minutes, such as 10:03, 10:05, 10:06
The above is the basic knowledge of adding scheduled tasks in cron. Because the task in cron is basically to execute the command line, of course there will be permission issues. The tasks in the above examples are executed with the permissions of your current logged-in user. If you need to execute a task as the root user, you can add sudo before crontab.
sudo crontab -e
By the way, the crontab file is different for each user, so the task of regularly checking the time just set cannot be seen here. Because we have not added such scheduled tasks for the root user.
By the way, if you don’t like the command line, you can go to the Ubuntu Software Center and go to the next scheduled task program. You can find it by searching for schedule in the Software Center. It is a GUI program, and it is quite fool-proof. However, it seems there is no way to set it up to use the root user to run tasks. Moreover, for those who want to SSL to the server for operation, the command line is still the best (only) tool.
Because I am currently using this knowledge, I don’t know much about cron. If you want to know about cron's children's shoes under Ubuntu, you can read the official Ubuntu article CronHowTo. I personally think it is quite detailed.