首页
Linux
云原生
常用bat文件
Maven教程
mongodb
设计模式
Oracle常用知识梳理
更多……
申请加入课程
Linux系统概要说明
Linux 搭建本地yum仓库
Linux 文本处理工具和正则表达式
VM 使用的几个核心关切点
Linux下python2.x升级python3.7
Linux 的Namespace和cgroups
CentOS7下安装Tomcat8
Linux Shell编程基础
Linux shell编程 输入输出
Linux shell编程test命令
Linux shell编程 流程控制
Linux shell编程 函数
Linux shell编程 文件引用与包含
curl 的使用案例
Linux 网络工具
Linux 定时任务 定时同步互联网时间
CentOS 初始化
Linux NFS 网络文件系统离线批量搭建
Linux 工具
Linux 通过服务器代理访问互联网
Linux ftp服务搭建
Linux 服务器配置SSH免密登陆
linux如何下载rpm离线安装包到本机
Linux 命令基础
Linux 文件管理命令和文件结构
Linux 标准I/O重定向和管道
Linux 用户和组以及权限
Linux 文件的权限管理
Linux 磁盘和磁盘分区
Linux 文件系统挂载与RAID
Linux LVM逻辑卷
Linux 服务注册
Linux常用基础指令
Linux 网络
Linux 防火墙
Linux 备份与还原
Linux 定时任务 定时同步互联网时间
星辰
2020-11-16
0
0
167
人
0
人评论
0
人举报
[TOC] # Linux 定时任务 ## 什么是定时任务 定时任务命令是cond,crond就是计划任务,类似于我们平时生活中的闹钟,定点执行 ## 为什么要用crond 计划任务主要是做一些周期性的任务,比如凌晨3点定时备份数据、晚上23点开启网站抢购接口、凌晨0点关闭抢占接口等。 计划任务主要分为以下两种使用情况: * 1.系统级别的定时任务 临时文件清理、系统信息采集、日志文件切割 * 2.用户级别的定时任务 定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据。 ## crontab配置文件 ``` [root@centos7 ~]# vim /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 备注: 1) * 表示任意的(分、时、日、月、周)时间都执行 2) - 表示一个时间范围段, 如5-7点 3) , 表示分隔时段, 如6,0,4表示周六、日、四 4) /1 表示每隔n单位时间, 如*/10 每10分钟 ``` ## crontab的时间编写规范 ``` 00 02 * * * ls #每天的凌晨2点整执行 00 02 1 * * ls #每月的1日的凌晨2点整执行 00 02 14 2 * ls #每年的2月14日凌晨2点执行 00 02 * * 7 ls #每周天的凌晨2点整执行 00 02 * 6 5 ls #每年的6月周五凌晨2点执行 00 02 14 * 7 ls #每月14日或每周日的凌晨2点都执行 00 02 14 2 7 ls #每年的2月14日或每年2月的周天的凌晨2点执行 */10 02 * * * ls #每天凌晨2点,每隔10分钟执行一次 * * * * * ls #每分钟都执行 00 00 14 2 * ls #每年2月14日的凌晨执行命令 */5 * * * * ls #每隔5分钟执行一次 00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点执行 00 02 1-8 * * ls #每月1号到8号凌晨2点执行 0 21 * * * ls #每天晚上21:00执行 45 4 1,10,22 * * ls #每月的1,10,22号的4:45执行 45 4 1-10 * * ls #每月的1到10号的4:45执行 3,15 8-11 */2 * * ls #每隔两天的上午8点到11点的第3和第15分钟执行 0 23-7/1 * * * ls #晚上11点到早上7点之间,每隔一个小时执行 15 21 * * 1-5 ls #周一到周五每天晚上21:15执行 ``` ## crontab命令选项 ``` -e #编辑定时任务 -l #查看定时任务 -r #删除定时任务 -u #指定其他用户 ``` ## 计划任务实践示例 示例1:使用root用户每2分钟执行一次时间同步 ``` #需提前安装软件包 [root@centos7 ~]# yum install -y ntpdate #先在Linux系统上查看命令是否正确 [root@centos7 ~]# ntpdate ntp.aliyun.com 26 Jul 15:20:49 ntpdate[19706]: step time server 203.107.6.88 offset -1.696419 sec #配置定时任务 #编辑定时任务 [root@centos7 ~]# crontab -e -u root #每2分钟执行一次时间同步 by wxg At 2019.07.26 */2 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null #查看定时任务 [root@centos7 ~]# crontab -l -u root #每2分钟执行一次时间同步 by wxg At 2019.07.26 */2 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null ``` ## 计划任务如何调试 ``` 1)crond调试 1)调整任务每分钟执行的频率, 以便做后续的调试。 2)如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。 3)命令使用绝对路径, 防止无法找到命令导致定时任务执行产生故障。 4)通过查看/var/log/cron日志,以便检查我们执行的结果,方便进行调试。 2.crond编写思路 1.手动执行命令,然后保留执行成功的结果。 2.编写脚本 脚本需要统一路径/scripts 脚本内容复制执行成功的命令(减少每个环节出错几率) 脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句 脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null 3.执行脚本 使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash) 执行脚本成功后,复制该执行的命令,以便写入cron 4.编写计划任务 加上必要的注释信息, 人、时间、任务 设定计划任务执行的周期 粘贴执行脚本的命令(不要手敲) 5.调试计划任务 增加任务频率测试 检查环境变量问题 检查crond服务日志 /var/log/cron ``` ## 综合示例:使用定时任务发邮件 ``` 步骤一:配置邮件发邮件 1)现在/etc/mail.rc配置文件中配置邮件及下载证书; 2)登录邮箱客户端或者PC端,开启POP3/SMTP服务,获得授权码; [root@centos7 ~]# vim /etc/mail.rc #发件人 set from=233233232@qq.com #邮件服务器 set smtp=smtp.qq.com #发件人用户名 set smtp-auth-user=233233232@qq.com #发件人密码(QQ邮箱不可以使用密码,只能使用授权码) set smtp-auth-password=etadwxmucvmwbded #登录方式 set smtp-auth=login #邮件服务器协议及端口 set smtp=smtps://smtp.qq.com:465 #忽略证书 set ssl-verify=ignore #指定证书位置 set nss-config-dir=/root/.certs Type :quit
to exit Vim ``` > 邮箱的配置此处不讲解 ## 查看定时任务执行情况 `tail -n 20 /var/log/cron`
所有评论列表
点我发表评论