Home >Operation and Maintenance >Linux Operation and Maintenance >Scheduled tasks under Linux - scheduled tasks that are executed periodically
The at command has been introduced in previous articles. It is used to set up a scheduled task that is executed only once. Today, let’s take a look at scheduled tasks that are executed periodically. In work, periodic scheduled tasks are often used, such as regular backup of system files, regular backup of database files, processing of orders that have not been paid for a long time, etc.
Users set up periodic scheduled tasks crontab
Generally, if users want to set up periodic scheduled tasks, they need to use the crontab command. Like at, crontab also has a black and white list, and the configuration files are -/etc/cron.deny, /etc/cron.allow.
When the user sets a scheduled task, the task will be recorded in the /var/spool/cron directory as a text file.
# ll /var/spool/cron/ total 4 -rw------- 1 root root 98 Jul 28 03:58 root
Regarding crontab, we only need to remember two commands
crontab -e Set up scheduled tasks
crontab - l View scheduled tasks
The format for setting scheduled tasks is as follows:
基本格式:分 时 日期 月份 星期 命令 取值范围:[0-59] [0-23] [1-31] [1-12] [0-7]
In addition, we also need to remember the meanings of several special characters:
* means any time can be used
, means a separated time period
- means a continuous period of time
/n means every n unit interval
Let’s take a look at the usage of the above special characters through a few examples:
# 每隔5分钟,执行下检测内存的脚本 */n * * * * /root/script/check_memory.sh # 每个月1号凌晨5点20分,重启下服务器 20 5 1 * * /usr/sbin/reboot
System configuration files /etc/crontab, /etc/cron.d/*
Regarding periodic scheduled tasks, there are three main ones. The local configuration files are
/var/spool/cron/, set for users
/etc/crontab, for System scheduled tasks
/etc/cron.d/ For scheduled tasks of a certain software or system, such as for a website, there may be multiple scheduled tasks, so it is recommended to run them in / In the etc/cron.d/ directory, create a new configuration file
crontab -e is designed for the user level. For system-level periodic tasks, it is recommended to write it in /etc/ crontal file, or in the /etc/cron.d/ directory.
Look at the contents of the /etc/crontab file below
# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed # * * * * * root /usr/bin/date >> /root/cron.txt
You can see that it is slightly different from crontab -e. You need to specify the user name here.
Next, let’s take a look at what files are in the /etc/cron.d/ directory
# ll /etc/cron.d total 8 -rw-r--r--. 1 root root 128 Aug 3 2017 0hourly -rw------- 1 root root 235 Aug 3 2017 sysstat
If there is a website on the server, for this website, we need to regularly back up the database, Website files also need to process some data regularly, then we can create a related file in the /etc/cron.d/ directory. Let’s take a look at the content of the 0hourly file:
# Run the hourly jobs SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 01 * * * * root run-parts /etc/cron.hourly
This script means to execute the script file in the /etc/cron.hourly directory every hour.
I guess sharp-eyed friends have discovered that in addition to the cron.hourly directory, there are also cron.daily, cron.monthly, and cron.weekly directories. But there are some differences between these three directories. These three directories are executed by anacron. This anacron means to wake up the unexecuted scheduled task and execute it. For example, when you use crontab -e to set up a scheduled task, and the task is not executed after the time has passed due to shutdown or other reasons, then you can only miss it, but if you place the script in /etc/cron In the .daily/ directory, as long as it is not executed, it will still be executed even if the time has passed.
The above is the detailed content of Scheduled tasks under Linux - scheduled tasks that are executed periodically. For more information, please follow other related articles on the PHP Chinese website!