每个用户自己的crontab文件都会被放在 /var/spool/cron目录下,默认为空,可以使用crontab命令创建。cron守护进程会检查/var/spool/cron目录下的文件,根据这些文件中的cron任务所设置的执行时间决定是否执行任务,如果当前时间与cron任务所设置的执行时间相同,则执行任务。
当cron的配置文件发生改变时,不需要重置cron守护进程。cron守护进程会检查配置文件的变化。
创建自己的crontab之前,首先要设置环境变量EDITOR,cron进程根据它来确定使用哪个编辑器编辑crontab文件。在home目录下的.bashrc或者.profile里加入一行
#你也可以使用自己喜爱的其他终端编辑器 EDITOR=vim; export EDITOR
2.1.crontab命令参数及使用示例
usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
创建并编辑当前用户的crontab
crontab -e
列出当前用户的crontab
crontab -l
删除用户linus的crontab
crontab -u linus -i -r
2.2.crontab文件语法详解及示例
当用 crontab -e 编辑当前用户的crontab文件时,首先写入以下内容。
# crontab -e SHELL=/bin/bash MAILTO=root@example.com PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin # 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
该文件的前三行代码设置了默认环境。cron守护进程并不提供任何环境。SHELL变量设置当cron任务(命令以及脚本)运行时的shell,MAILTO变量设置cron任务执行结果发送的邮箱,PATH设置去哪些目录下寻找cron任务的命令。注释部分则解释一条cron任务的构成,一条cron任务就是一行,要设置多少条cron任务则写多少行。一条cron任务由七个部分组成,从左到右依次为:
分钟(0-59) 小时(0-23) 天(1-31) 月 (1-12):或者可以使用月份的英文单词的前三个字母,比如jan,feb,mar,apr... 星期(0-6):星期天用0或者7都可以,或者可以使用星期的英文单词的前三个字母,比如sun,mon,tue,wed,thu,fri,sat 用户名称(可以省略) 要执行的命令或者脚本目录前五个部分的编写注意特殊符号的含义:
如果你想匹配取值范围内的所有值,使用“*” 想匹配某些特殊的值,使用“,”,比如2,4,7就匹配的是2,4以及7。 两个值被“-”连接表示范围,此时匹配的是范围内所有值,包含“-”两边的值,比如4-7匹配的就是从4到7。 想要表达每隔一段时间执行一次任务,使用 “/”, 比如分钟部分中的 “*/10”表示每10分钟运行一次,比如小时部分中的“10-22/2”则表示在早上10点到晚上10点这段时间内,每隔两个小时运行一次。 注意 :当“/”左边的值可以除尽“/”右边的值时,任务才会运行。









