Brief introduction
The crontab command is common in UNIX and unix-based operating systems, and is used to set periodically executed instructions. This command reads the instruction from the standard input device and stores it in a "crontab" file for later reading and execution.
Typically, crontab stored instructions are activated by the daemon, Crond often run in the background, checking every minute for scheduled jobs to be performed. This type of assignment is commonly referred to as cron jobs.
Cron is a service in Unix/linux that provides regular execution of shell commands, including the Crond and crontab parts:
Crond:cron Service Daemon, resident memory responsible for regular scheduling
Crontab:cron Management tool, responsible for editing schedule
The following demo is performed under Ubuntu 16.04. The basic use method can be viewed with commands man crontab
NAME
crontab-maintain crontab files for individual users (Vixie Cron)
Synopsis
crontab [-u user] File
crontab [-u user] [i] {-e |-l |-r}
To explain briefly
-e
edit, like vim, check syntax when saving exit
-l
Enumerate All Tasks
-r
Delete All Tasks
If crontab runs wrong, you can view the log file/var/log/syslog
Basic syntax
The cron syntax is very simple, with a total of six chunks, the first five are used to specify a time period, and the last piece is a specific command to execute, which looks like a format:
Min Hour day Month Week command
which
min
minutes, Range 0-59
hour
hours, Range 0-23
day
Day, Range 1-31
L can be filled in to indicate the last day of the month
You can fill in the w,1w to indicate the most recent working day from No. 1th
month
Month, Range 1-12
The last day of the month crontab itself is not supported and needs to be judged by scripting
week
Week, Range 0-7
Here 0 and 7 all mean Sunday
Week and Moon can not coexist, may conflict
You can fill out #,4#3 for the third Thursday of the month
You can fill in l,5l for the last Friday of the month
command
represents the specific command to execute (preferably an absolute path)
If you have more than one command, you need to connect with &, or write multiple commands in a shell script, and then crontab execute the shell script periodically
In addition, similar to regular expressions, there are some special symbols to help us achieve flexible scheduling
*
asterisk, which means that each possible value is accepted
For example, * * * * command means that command is executed every minute
,
comma, parallel time
For example, the * 6,12,18 * * command means that command is executed at 6, 12 and 18.
-
minus sign, continuous interval
For example, * 9-17 * * command indicates that the command is executed every minute from 9 to 17.
/
Slash, spacer unit
For example, */5 * * * command means that the command is executed every 5 minutes
System-Level Crontab
If we need to execute some higher-privileged instruction, we need to use root to execute, and the mechanism is different from the basic syntax described earlier, and the file we need to edit is/etc/crontab. Let's look at the contents.
dawang@dawang-parallels-virtual-platform:~$ cat/etc/crontab
#/etc/crontab:system-wide crontab
# Unlike any Other crontab you don ' t have to run the ' crontab '
# command to install the new version when you edit this file
# a nd files IN/ETC/CRON.D. These files are also have username fields, # that none of the other
crontabs do.
Shell=/bin/sh
path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m H Dom Mon Dow user Command * * * *
root CD/&& run-parts--report/etc/cron.hourly
6 * * * Root test-x/usr/sbin/ana Cron | | (CD/&& run-parts--report/etc/cron.daily)
6 * * 7 root test-x/usr/sbin/anacron | | (CD/&& run-parts--report/etc/cron.weekly)
6 1 * * Root test-x/usr/sbin/anacron | | (CD/&& run-parts--report/etc/cron.monthly)
#
We need to add the command performer between the command and the time interval, and we can also add environment variables to use in the schedule. We see a few cron.* files in the configuration file, let's see what else looks like.
dawang@dawang-parallels-virtual-platform:~$ Ll/etc | grep cron
-rw-r--r--1 root 401 December 2014 Anacrontab
drwxr-xr-x 2 root root 4096 April 06:14 cron.d/
drwxr-xr-x 2 root 4096 April 06:14 cron.daily/
drwxr-xr-x 2 root root 4096 April 06:08 cron.hourly/drwxr-x
R-x 2 root 4096 April 06:14 cron.monthly/
-rw-r--r--1 root root 722 April 6 05:59 crontab
drwxr-xr-x 2 root Root 4096 April 06:14 cron.weekly/
which
cron.d
directory: All files in the directory and subdirectories that match the scheduling syntax are executed
cron.deny
: Record users who refused to execute
cron.allow
: Records allowed to execute the user, this file has a higher priority, in general, only need to configure a file (see if you need a white list or blacklist mechanism)
cron.daily/hourly/monthly/weekly
directory: Inside are all scripts, respectively, in the specified time to execute
For more detailed information, you can enter man 5 crontab
or man 8 cron
consult
Principle
Why we crontab -e
can add a timed task by editing it? Each time we add a row, the job is recorded in/var/spool/cron/crontab, and if my username is Dawang, then the corresponding file is/var/spool/cron/crontab/dawang (requires root Permission to view). However, it is not recommended to modify directly, because the direct modification is not a grammar check.
In some systems, the source configuration file is not necessarily read every time (instead of using the version loaded into memory), we need to restart the Crond service at this time, the command is/sbin/service crond restart
Crond Service Management
The default system does not start the Crond service for us, if you want to boot up, you need to add the service Crond start in/etc/rc.d/rc.local, the other management commands are
# Start Service
/sbin/service crond start
# Close service
/sbin/service crond Stop
# Restart service
/sbin/service Crond Restart
# reload configuration
/sbin/service Crond Reload
Instance test
And then we're going to fight, the first time crontab -e
we need to select the editor, the default is the nano, but I chose vim
dawang@dawang-parallels-virtual-platform:~$ crontab-e
No crontab for dawang-using a empty one
Select an editor . To the change later, run ' select-editor '.
1./bin/ed
2/bin/nano <----easiest
3./usr/bin/vim.tiny
Choose 1-3 [2]:
To verify that it is really executing, we build two operations per minute, as follows (focus on the last two lines):
# Edit This file to introduce the tasks to is run by Cron.
# each task to run has to is defined through a single line # indicating with different when the task would be run # and what command to run for the task # ~ Define the time can be provide concrete values for # minute (M), hour (h), Day of Month (DOM), month (Mon), # and day of Week (Dow) or use ' * ' in this fields (for "any"). # Notice that tasks would
Be started based on the Cron's system # Daemon ' s notion of time and timezones. # Output of the crontab jobs (including errors) is sent through # Email to the user the crontab file belongs to (unless
redirected). # For example, your can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar-zcf/var/back ups/home.tgz/home/# For more information to the manual pages of crontab (5) and Cron (8) # m H Dom Mon Dow command * * * * Date >>/home/dawang/date.txt * * * * * echo "time to go!" >>/home/dawang/time.txt
Two things are done here, one is the hourly time, the other is the output per minute, where the >> is used to append output, and more input and output methods are described in the next section. If you have not started the service, now use the service crond start
start, and then wait for a while, you can see the output, specific reference to the following command, here is not to repeat:
dawang@dawang-parallels-virtual-platform:~$ LL | grep txt
-rw-rw-r--1 dawang dawang 1849 July 16:08 date.txt-rw-rw-r--
1 dawang dawang 516 July 16:08 time.txt< c4/>dawang@dawang-parallels-virtual-platform:~$ tail-n date.txt
July 26, 2016 Tuesday 16:01:01 CST
July 26, 2016 star Phase II 16:02:01 CST
July 26, 2016 Tuesday 16:03:01 CST
July 26, 2016 Tuesday 16:04:01 CST
July 26, 2016 Tuesday 16:05:01 cst
2016 year July 26 Tuesday 16:06:01 CST
July 26, 2016 Tuesday 16:07:01 CST
July 26, 2016 Tuesday 16:08:01 CST
July 2016 26th Tuesday 16:09:01 CST
July 26, 2016 Tuesday 16:10:01 CST
dawang@dawang-parallels-virtual-platform:~$ tail-n. TXT time to
go!
Time to Go!
Time to Go!
Time to Go!
Time to Go!
Time to Go!
Time to Go!
Time to Go!
Time to Go!
Time to Go!
REDIRECT Command
Here we give an example directly
Command > file redirect standard output to file command
>> files append standard output to file
Command 1 > file redirect standard output to file
command 2 > File redirects standard error to document command
2 >> file append standard output to file
command 2>&1 redirect command standard error to standard output
command > file 2>&1 redirects standard output with standard error to file
command >> file 2>&1 appends standard output with standard error to file
command < file Input command < file >file2 The command command to the file file as standard
input, file2 file as standard output
command < &-Turn off standard input
Summarize
The above is the entire content of this article, I hope for everyone's study or work can bring certain help.