Linux 定时任务

一、简述

定时任务其实就是定点执行某个任务,常见的场景有定时备份文件、定时同步时间、定时爬虫等。

二、定时任务书写格式

*  *  *  *  * [command to be executed]

#配置文件详解
~]# 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)  #0-59分钟
# |  .------------- hour (0 - 23)    #0-23小时
# |  |  .---------- day of month (1 - 31)  #1-31天
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...  #1-12月
# |  |  |  |  .---- day of week (0 - 6) #0-6周
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

#符号解释
*    代表任意的(分,时,日,月,周)时间都执行
-    表示一个时间范围,时间段,例:5-7
,   表示分隔时间段,例:6,0,4表示每周六,日,四都执行
*/1  表示每隔多长时间执行一次,例:*/10 表示每隔10分钟执行一次

三、crontab 命令使用方法

-e参数:编辑定时任务 
-l参数:查看定时任务
-r参数:删除定时任务
-u参数:指定其他用户

四、定时任务指定时间示例

00  02  *  *  *               每天凌晨2点整执行
00  02  1  *  *               每月1号凌晨2点整执行
00  02  14  2  *              每年的2月14号凌晨2点整执行
00  02  *  *  7               每周日凌晨2点整执行
00  02  *  6  5               每年6月每周5凌晨2点整执行
00  02  14  *  7              每月14号凌晨两点整执行,或者每月周日凌晨2点整执行。
00  02  14  2  7              每年2月14日凌晨2点整执行,或每年2月的每周日凌晨2点整执行。
*/10  02  *  *  *             每天从凌晨2点开始,每10分钟执行一次
*  *  *  *  *                 每分钟执行一次
00  00  14  2  *              每年2月14日凌晨12点整执行
*/5  *  *  *  *               每5分钟执行一次
00  02  1-8  *  *             每月1号到18号凌晨2点整都执行
0  21  *  *  *                每天21点整执行一次
45  4  1-10  *  *             每月1号到10号的凌晨4点45分执行                 
3,15  8-11  */2  *  *        每两天8点到11点的3分和15分各执行一次
0  23-7/1  *  *  *            每天的23号到凌晨7点,每隔1小时执行一次。
15  21  *  *  1-5             每周1到周5,21点15分执行
*  02  *  *  7                每周日凌晨2点开始执行,2点的每1分钟都执行一次
00  02  *  1,2,8  *         每年1月,2月,8月的凌晨2点整都执行一次
45  4  1,10,22  *  *        每月的1号,10号,22号的凌晨4点45分执行。 

五、限制某个用户使用定时任务

~]# cat /etc/cron.deny 
test
~]# su - test
~]$ crontab -e
You (test) are not allowed to use this program (crontab)
See crontab(1) for more information

六、注意事项

1.编写定时任务时需添加备注

2.将需要定期执行的任务写入脚本中。避免出现字符相关问题。例如:

*/1 * * * * /usr/bin/touch /home/test/$(date +%F%s).txt

在定时任务中会将 % 当作换行符,无法被执行。需要将 % 添加转义符,正确书写方式:

*/1 * * * * /usr/bin/touch /home/test/$(date +\%F\%s).txt

3.定时任务尽量将输出重定向到 /dev/null,避免影响终端正常使用

4.在编辑定时任务时,命令一定要使用绝对路径

你可能感兴趣的:(linux,运维,服务器)