定时任务crond、crontab
2024-09-02 22:59:01
crontab命令是用来设置定时任务规则的配置命令,配置文件/etc/crontab 与/var/spool/cron/目录下当前用户名的文件。
-l 显示当前定时任务
-e 编辑定时任务
对于root用户:
crontab -l 等同于 cat /var/spool/cron/root
crontab -e 等同于 vim /var/spool/cron/root
/etc/crontab 配置文件介绍:
[root@55test /etc]# 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
- 第一列*:分钟(0-59)
- 第二列*:时(0-23)
- 第三列*:日(1-31)
- 第四列*:月(1-12)
- 第五列*:周(0-6)
表示法:
- - 用于表示连续区间,比如:1-10 可表示1点到10点
- ,用于表示不连续区间,比如:1,3,9,22 可表示1点,3点,9点,22点
- /n用于时间间隔,比如:/5 可表示每5分钟或每5小时等
- 在指定用户下执行定时任务
- 在定时任务及脚本中,命令使用全路径格式
- /etc/crontab 中,特殊符号(%)需使用转义字符;写入脚本文件时,不需要使用转义字符
- 定时任务的脚本前需加/bin/sh
- 不要随意打印输出信息,定时任务结尾加 &>/dev/null (>/dev/null 2>&1),避免定时任务给root用户发邮件,防止产生大量报错信息占用过多inode。
- 定时任务使用非登录的shell执行,与用户登录shell环境变量可能不同,PATH、PS1 等变量需重新export。
举例
时间:
*/1 * * * * /bin/sh /scripts/data.sh #每个一分钟执行
30 3,12 * * * /bin/sh /scripts/boy.sh #3:30与12:30执行
30 */6 * * * /bin/sh /scripts/boy.sh #每隔6小时的半点执行
30 8-18/2 * * * /bin/sh /scripts/boy.sh #8-18之间每隔2小时的半点执行
30 21 * * * #每天21点半执行
45 4 1,10,22 * * /application/apache/bin/apachectl graceful #每月1、10、22号4点45分执行
10 1 * * 6,0 /application/apache/bin/apachectl graceful #每周六周日1点10分执行
0,30 18-23 * * * /application/apache/bin/apachectl graceful #18-23点之间整点、半点执行
00 */1 * * * /application/apache/bin/apachectl graceful #每小时整点执行
常见错误:
* 23,0-7/1 * * * /application/apache/bin/apachectl graceful #23点及0-7点间每分钟执行一次
命令:
[root@55test ~]# crontab -l
*/2 * * * * /usr/bin/tar zcf /mnt/mm_`date +\%F_\%T`bak1.tz mm* &>/dev/null
*/3 * * * * /usr/bin/tar zcf /mnt/mm_$(date +\%F_\%T)bak2.tz mm* &>/dev/null
*/5 * * * * /bin/sh /work/sh-file/mm_bak.sh &>/dev/null
[root@55test /work/sh-file]# vi mm_bak.sh
/usr/bin/cd /root&&/usr/bin/tar zcf /mnt/mm_$(date +%F_%T)bak3.tz ./mm* # 使用&&将两条命令关联,第一条执行成功后,再执行第二条命令
也可以使用如下格式:
/usr/bin/cd /root&&\ #使用\换行,方便阅读
/usr/bin/tar zcf /mnt/mm_$(date +%F_%T)bak3.tz ./mm*
定时任务调试思路:
1、查看错误日志/var/log/cron,可以先清空日志(echo >/var/log/cron)后再查看新报错
2、调整系统时间日期(间隔大于5分钟)、定时任务时间或定时任务执行频率,加快命令执行。
3、通过脚本日志输出,调试定时任务,/bin/sh /server/scripts/bak.sh &>/tmp/bak.log
最新文章
- Cesium应用篇:1快速搭建
- JQuery随笔
- wampserver 403 禁止访问
- vs快捷键汇总
- Android Studio快捷键每日一练(5)
- IOS 2D游戏开发框架 SpriteKit-->;续(postion,锚点,游戏滚动场景)
- js 上传文件后缀名的判断 var flag=false;应用
- 34、JS/AJAX
- 2.6内核LOGO制作方法
- DES加密 java与.net可以相互加密解密的方法
- WPF 创建桌面快捷方式
- magento2 客户端模式less样式修改。
- 关于expanded一级二级菜单数据的分组排序
- MyEclipse Hibernate Reverse Engineering 找不到项目错误
- gcc 简单编译流程
- JAVA-Servlet-过滤器知识总结
- 机器学习 —— 类不平衡问题与SMOTE过采样算法
- Java与Kotlin, 哪个是开发安卓应用的首选语言?
- java IO流全面总结
- SignalR学习笔记(一) 简单聊天室
热门文章
- for aws associate exam
- linux cut sort wc sed>;vi awk (文本处理)
- Windows2008 r2“Web服务器HTTP头信息泄露”漏洞修复
- C# 格式化XML方法
- java 8 jdk1.8 新特性
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_9 typeAliases标签和package标签
- Jmeter之检查点
- Ubuntu16.04 国内源 source 注意事项
- CentOS7配置NFS网络文件系统
- SpringBoot中定时任务默认是串行执行 如何设置并行