Detailed introduction of crontab service for scheduled tasks under linux

1, Introduction to crontab

1. crontab is used to allow users to execute programs at fixed times or intervals
If you need to implement the task scheduling function on linux platform, you can write cron script to implement it.
Perform tasks at a certain frequency
linux will start the crond process by default. The crond process does not need to be started or closed by the user.
The crond process is responsible for reading and executing the scheduling tasks. Users only need to write the corresponding scheduling script into the cron scheduling configuration file.
cron's scheduling files are as follows:
1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. cron.monthly
6. cron.weekly

If the task used is not executed in hourly monthly weekly mode, you can write the corresponding crontab to crontab or cron D directory.

Example:
Execute the script every other minute /opt/bin/test.sh
 Can be in cron.d New script echo-date.sh
 The content is
*/1 * * * * root /opt/bin/test.sh

2. Cron is a timed execution tool under Linux, which can run jobs without human intervention. Because cron is a built-in service of Linux, if it doesn't work automatically, you can start and close the service in the following ways:

/sbin/service crond start //Start service
/sbin/service crond stop //Shut down service
/sbin/service crond restart //Restart service
/sbin/service crond reload //service crond reload 

You can also start this service automatically when the system starts:
In / etc / RC d/rc. Local add the following at the end of the script:
/sbin/service crond start
Now that Cron is already in the process, we can use this service

Check whether the service is running. Use ps -ax | grep cron

2, crontab command

To check whether the crontab service under the user is created successfully, use the crontab -l command
Command which php to view the path of php installed under linux
Cron service provides crontab command to set the of cron service. Here are some parameters and descriptions of this command:

crontab -u //Set the cron service of a user. Generally, root users need this parameter when executing this command 
crontab -l //List the details of a user's cron service
crontab -r //Delete cron service without users
crontab -e //Edit a user's cron service

For example, root can view its own cron settings: crontab -u root -l
For another example, root wants to delete the cron setting of fred: crontab -u fred -r
When editing the cron service, the edited content has some formats and conventions. Enter: crontab -u root -e
Enter vi editing mode, and the edited content must conform to the following format: * / 1 * * ls > > / TMP / LS txt
crond resident command of task scheduling is a command used by linux to execute programs regularly. When the installation of the operating system is completed, the system will be started by default
Task scheduling command. The crond command will periodically check whether there is any work to be executed every minute. If there is any work to be executed, it will automatically execute the work.

1. crontab command options:

 -u Specify a user
 -l List a user's task plan
 -r Delete a user's task
 -e Edit a user's task

2. cron file syntax:
Hourly day month week order
0-59 0-23 1-31 1-12 0-6 command (value range, 0 means Sunday, generally one line corresponds to one task)

 Remember the meaning of several special symbols:
     "*"Represents the number within the value range,
     "/"Every "representative",If every 2 minutes:*/2
     "-"Represents from a number to a number,
     ","Separate several discrete numbers

3. Writing method of task scheduling setting file
The crontab -e command can be used to edit the cron file of the corresponding user under / var/spool/cron. You can also directly change the / etc/crontab file. The specific format is as follows:

  Minute Hour Day Month Dayofweek   command
  minute     Hour day     month       Days per week       command
 The meaning of each field is as follows:
 Minute             Perform the task in the first few minutes of each hour
 Hour               Perform the task in the first few hours of each day
 Day                 Perform the task on the day of each month
 Month             What month of the year is the task performed
 DayOfWeek     Perform the task on the day of the week
 Command       Specify the program to execute

In these fields, except that "Command" is a field that must be specified every time, other fields are optional fields, which can be determined as needed. For unspecified fields, fill their positions with "*".

Examples are as follows:
5   *   *   *   *    ls             Specify to execute every 5 minutes of the hour ls command
30  5   *   *   *    ls             Specify 5 days per day:30 implement ls command
30  7   8   *   *    ls             It is designated to execute at 7:30 on the 8th of each month ls command
30  5   8   6   *    ls             It is designated to be implemented at 5:30 on June 8 every year ls command
30  6   *   *   0    ls             Specify 6 days of every Sunday:30 implement ls command[Note: 0 means Sunday, 1 means Monday, and so on. It can also be expressed in English, sun Means Sunday, mon Monday, etc.]
30  3   10,20   *   *   ls     At 3:30 on the 10th and 20th of each month ls command[Note: "," is used to connect multiple discontinuous periods]
25  8-11  *   *    *    ls       8 per day-11 The 25th minute of point ls command[Note:“-"Used to connect consecutive periods]
*/15   *    *   *   *   ls         Every 15 minutes ls command [That is, it is executed in the 0 15 30 45 60 minutes of each hour ls command ]
30   6   */10   *   *   ls       Every month, every 10 days 6:30 Execute once ls command[That is, it is executed once at 6:30 on the 1st, 11th, 21st and 31st of each month ls Command. ]

At 7:50 every day root Identity execution/etc/cron.daily All executables in the directory
50  7   *   *   *   root    run-parts    /etc/cron.daily   [ Note: run-parts Parameter indicates that all executable files in the following directory are executed. ]

4. New scheduling

 There are two ways to add a scheduling task:
   1),Enter at the command line: crontab -e Then add the corresponding task, wq Save and exit.
   2),Direct editing/etc/crontab File, i.e vi /etc/crontab,Add the corresponding task.

5. View scheduled tasks

crontab -l //List all current scheduled tasks
crontab -l -u jp   //List all scheduling tasks of the user jp

6. Delete task schedule

crontab -r   //Delete all task scheduling jobs

7. Turn of task scheduling execution results

   Every day: 5:30 ls Command and output the results to/jp/test In the file
        30 5 * * * ls >/jp/test 2>&1
        Note: 2>&1 Indicates the execution result and error message.

8. Edit the / etc/crontab file to configure cron
The cron service not only reads all the files in / var/spool/cron once a minute, but also needs to read / etc/crontab once. Therefore, we can also use the cron service to do some things by configuring this file.
Configuring with crontab is for a user, while editing / etc/crontab is for the system. The file format of this file is:

 SHELL=/bin/bash 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 MAILTO=root //If there is an error or data output, the data will be sent to this account as an email 
 HOME=/ //The path where the user runs. This is the root directory 
 # run-parts 
  01   *   *   *   *     root run-parts /etc/cron.hourly       //Execute / etc / cron. Every hour Script in hourly 
 02   4   *   *   *     root run-parts /etc/cron.daily         //Execute / etc / cron. Every day Script in daily 
  22   4   *   *   0     root run-parts /etc/cron.weekly       //Execute / etc / cron. Every week Script in weekly 
  42   4   1   *   *     root run-parts /etc/cron.monthly     //Execute / etc / cron. Every month Scripts in monthly

You should pay attention to the "run parts" parameter. If you remove this parameter, you can write the name of a script to run instead of the folder name

For example:
 1) Enter at the command line: crontab -e Then add the corresponding task, wq Save and exit.
 2)Direct editing/etc/crontab File, i.e vi /etc/crontab,Add corresponding task
      11 2 21 10 * rm -rf /mnt/fb 

9. Considerations when planning to execute PHP scripts
Because php scripts may contain (require,include), relative paths and absolute paths, it is best to cd first and then execute.

As follows:
*/10 * * * * cd /var/www/cron && /usr/bin/php /var/www/cron.php

PS: make a record when using it for reference only!

Tags: Linux Operation & Maintenance

Posted by lrsdsout on Sun, 15 May 2022 18:18:13 +0300