配置crond定时任务
文章目录
- 一. crond计划任务概述
- 二. crond配置文件详解
- 三. crond计划任务管理
- 四. crond配置编写实例
- 五. crond计划任务调试
一. crond计划任务概述
什么是计划任务,计划任务类似于我们平时生活中的闹钟。
在Linux系统的计划任务服务crond可以满足周期性执行任务的需求。
crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据
- Schedule one-time tasks with at. 一次性调度执行 at
- Schedule recurring jobs with cron. 循环调度执行 cron
- Schedule recurring system jobs. 所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向
//循环调度执行cron 进程每分钟会处理一次计划任务(考试时一定要查看一下,小心给你关掉了。)
[root@wangqing ~]# systemctl status crond
- [root@wangqing ~]# ps aux |grep crond
root 1201 0.0 0.0 126264 1640 ? Ss 11:15 0:00 /usr/sbin/crond -n
- [root@wangqing ~]# ps aux |grep crond
计划任务分为以下两种情况:
系统级别的定时任务:
- 清理系统缓存
- 临时文件清理
- 系统信息采集
- 日志文件切割
用户级别的定时任务:
定时同步互联网时间
获取ntpdate的源码包,直接在centOS上安装。
http://mirror.centos.org/centos/7/updates/x86_64/Packages/ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm
然后通过ntpdate命令进行时钟同步。
定时备份系统配置文件
定时备份数据库文件
二. crond配置文件详解
文件 | 说明 |
---|---|
/etc/crontab | //crontab配置文件 |
/etc/cron.deny | //该文件中所列用户不允许使用crontab命令,如果需要添加白名单就创建/etc/cron.allow。 |
/var/spool/cron/* | //所有用户定时文件都存放此目录,文件以用户名命名 |
/var/log/cron | //定时任务执行后的日志文件,可用来回溯 |
- 先拒绝后允许,除了拒绝的人之外其他人都可以用计划任务,这就是黑名单。
- 先允许后拒绝,除了允许的人之外其他人都不能使用计划任务,这就是白名单。
- 白名单和黑名单不能同时使用。root默认都可以查看,无法限制查看计划任务。
三. crond计划任务管理
- crond任务管理
命令帮助语法:[root@wangqing ~]# crontab --help
参数 | 含义 | 指定示例 |
---|---|---|
-e | 编辑crontab文件内容 | crontab -e |
-l | 查看crontab文件内容 | crontab -l |
-r | 删除crontab文件内容 | crontab -r (会清空所有的,切记不要删除。可以通过vim界面调整) |
-u | 管理其他用户的计划任务 | crontab -u wangqing -l |
注意: crontab {-l -e}实际上就是在操作/var/spool/cron/username
//如何进行计划任务的备份?
crond时间含义
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 //星期
# | | | | |# * * * * * command to be executed// * 表示任意的(分、时、日、月、周)时间都执行
// - 表示一个时间范围段, 如5-7点
// , 表示分隔时段, 如6,0,4表示周六、日、四
// /n 表示每隔n单位时间, 如/10 每10分钟
crond编写示例
00 02 * * * command 每天的凌晨两点执行
00 02 1 * * command 每月1号凌晨两点执行
00 02 14 2 * command 每年的2月14号凌晨两点执行
00 02 * * 7 command 每个星期天的凌晨两点执行
00 02 * 6 5 command 矛盾错误的写法。
00 02 14 * 7 command每个月的14号且是星期天的两点执行(不推荐)
00 02 14 2 7 command 每年的2月14号且是周天的两点执行
* 02 * * * command 错误的写法,没有指定分钟
* * * * * * command
* * * 14 2 * command
*/5 * * * * command 每隔五分钟执行一次命令 */表示每隔多少时间
*/5 */2 */3 5 * command 每年五月的每隔三天的每隔两小时每隔五分钟执行一次。
30 5 3 * * command 每个月的三号凌晨5点三十分执行。
crond书写规范
//1.为计划任务增加必要的注释
[root@wangqing ~]# crontab -l
##time sync
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null//2.规范计划任务执行脚本存放的路径/scripts/ (统一标准放到脚本目录下,在脚本前面需要添加一个/bin/bash )然后将计划任务的脚本执行结果重定向到一个文件目录里去。
[root@wangqing ~]# crontab -l
##backup www to /backup
30 01 * * * /bin/sh /scripts/www_backup.sh &>/dev/null(输出目录文件)//3.执行shell脚本任务前加/bin/sh, 脚本结尾加&>/dev/null
//调试好后应屏蔽debug输出信息,避免产生系统垃圾占用过多inode, 如需输出日志, 可重定向至日志文件
[root@wangqing ~]# crontab -l
####backup www to /backup
30 01 * * * /bin/sh /scripts/www_backup.sh &>/tmp/www_backup.log
四. crond配置编写实例
[root@wangqing ~]# crontab -e
- #每天凌晨切割nginx日志
05 00 * * * /bin/bash -x /scripts/cut_nginx.sh &> /scripts/log/nginx.log - #每天5点备份数据库
00 05 * * * /bin/bash -x /scripts/dump_sql.sh &>/scripts/log/mysql.log(当测试计划任务正常执行,则可以删除日志文件的编写。)
- #每天凌晨切割nginx日志
//注意:
- .我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。
- 2.crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。
- 3.几乎每个服务器都会用到crond服务。
五. crond计划任务调试
- 调试的环境分为以下几种:
测试环境 | 测试人员使用 | 装机+业务环境 发布版本 |
---|---|---|
开发环境 | 开发人员使用 | 装机+业务环境 |
准生成(预部署)环境 | 运维维护使用 | |
生产环境 | 运维维护使用 | 客户使用的环境 让公司盈利的环境 |
1,调整任务每分钟执行, 检测是否是否正常, 有些任务不要频繁执行
2,调整系统时间然后在检测任务, 生产不建议直接使用此方式(业务运行的环境中不建议更改系统时间)
3执行脚本, 将脚本执行输出写入指定日志文件, 观察日志内容是否正常
4注意一些任务命令带来的问题echo “wangqing” >>/tmp/test.log &>/dev/null 输出文件位置以最后一个路径为准,最终内容将输入对应的文件中。
5命令使用绝对路径, 防止无法找到命令导致定时任务执行故障
6 查看/var/log/cron日志进行调试
- 建议: 将需要定期执行的任务写入脚本中, 建立/scripts目录统一存放脚本, 脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常, 然后将脚本加入计划任务测试, 测试后无问题将脚本输出写入对应的日志文件中即可。
计划任务添加步骤:
- 1,手动执行保留执行命令的正确结果(添加前一定要测试脚本的正确性。)
- 2,编写脚本
- 脚本需要统一路径/scripts
- 脚本开头建议填写注释信息, 包括执行时间、周期、任务
- 脚本内容复制执行成功的命令至脚本文件中(减少每个环节出错几率)
- 脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句
- 脚本执行的输出信息不要随意打印, 可以重定向至其他位置保留或丢入黑洞
- 3,执行脚本
- 使用bash执行, 防止脚本没有增加执行权限(/bin/bash)
- 执行命令以及脚本成功后并复制该命令
- 4,编写计划任务
- 加上必要的注释信息, 人、时间、任务
- 设定计划任务执行的周期
- 加入执行脚本的命令
- 5,调试计划任务
- 增加任务频率测试、调整系统时间测试(不能用于生产)
- 检查环境变量问题、检查crond服务产生日志进行排查
案例:
在linux系统中备份脚本backup.sh需要再每周1-5的每天下午1点和晚上8点执行,下列哪个cron命令可以完成(D)
a. 00 13,20 * 1-5 * backup.sh
b. 0 13,20 1,5 * * backup.sh
c. * 13,20 * * 1-5 backup.sh
d. 00 13,20 * * 1-5 backup.sh
说明以上答案每一行是什么含义
每年的一到五月的每天的13点和20点执行backup.sh脚本文件
每月的1号和五号的13点和20点执行backup.sh脚本文件
错误,没有指出时间。
每周一到周五的13点到20点的执行backup.sh 故选D。
2.新建/scripts/httpd.sh文件,并让/scripts/httpd.sh脚本在每天的00:10分执行
10 00 * * * /bin/bash : /scripts/httpd.sh
3.新建/backup目录,每周一下午5:50将/backup目录下的所有文件打包成 backup.tar.gz
4.写一个定时任务,每天0点5分把/var/log/nginx下7天前的文件转移到/backup/2018_xx_xx的目录中
5.系统脚本/scripts/which.sh,如何定时每隔7分钟执行一次?
6.如何不小心删除了/var/spool/cron/root文件,该如何恢复。
配置crond定时任务相关推荐
- 图文详解crond定时任务
第1章crontd的介绍 1.1crond的含义 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安 ...
- linux_配置_cron定时任务配置
crontab 介绍 在linux操作系统中,crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令, 并将其存放于"crontab"文件中,以供之后读取和执行 ...
- linux 之 crond定时任务
一.crond简介 crond 是linux下用 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一.系统任务调度 二.crond服务 1.安装cro ...
- IIS配置网站定时任务必设参数图文教程
这篇文章主要介绍了IIS配置网站定时任务必设参数图文教程,IIS服务中的网站定时任务必须设置固定时间间隔(分钟).闲置超时(分钟)两个参数,需要的朋友可以参考下如何起名 网站中的定时任务一般是必不可少 ...
- 老男孩Linux Crond定时任务练习题
Linux Crond定时任务练习题 Crond是系统中用来定期执行命令或指定程序任务的一种服务或软件. 严格的说,linux系统下的定时任务软件不少,例如:at.crontab.anacron,其中 ...
- 集群环境下,谁偷走quartz配置的定时任务
错误现象: 在本地开发环境中,应用服务启动后TRIGGER_STATE直接就变为ERROR 前段时间在项目中,使用quartz配置一个定时任务,定时任务都持久化到oracle数据库中,但是应用服务器启 ...
- 【分布式任务调度】(二)XXL-JOB执行器配置及定时任务的创建
文章目录 1. 概述 2. 调度器配置 2.1.依赖及配置 2.2.任务实例 2.3.调度中心管理配置 3. 总结 1. 概述 在上一篇<XXL-JOB调度中心集群部署配置>中,我们已经得 ...
- Linux的基本操作——crond定时任务
一.crond简介 1.基本介绍 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会 ...
- crond定时任务详细分析
一.定时任务crond的介绍 crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.一般情况下,我们安装文成系统之后,默认变回启动crond任务调度服务,crond服务会定期 ...
最新文章
- 【学习笔记】分治FFT
- css/js压缩工具
- 管理活动目录域服务实训_酒店管理专业开展酒店实训活动
- 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 函数形参设置 | 确保打开文件成功 | 统计文件大小 )
- 接口文件也是.java结尾吗
- BZOJ 2073: [POI2004]PRZ( 状压dp )
- C#对Microsoft.VisualBasic My对象兰台妙选
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
- LeetCode 686. 重复叠加字符串匹配
- [雪峰磁针石博客]大数据Hadoop工具python教程2-python访问HDFS
- Stanford机器学习---第九讲. 聚类
- 《图解数据结构》.pdf
- c语言中怎么避免整数除法,大整数除法
- 在程序中使用3D Vision--转帖
- 计算机毕业设计Java共享充电宝管理系统(源码+系统+mysql数据库+Lw文档)
- Java并发指南6:Java内存模型JMM总结
- QEMU中TCG翻译流程
- 8086汇编(3、指令集)
- 电商平台促销方式汇总
- IOS之 点击链接跳转到App Store指定App(应用程序)
热门文章
- 抖音购物车功能的开通条件
- c语言两程序合并,C语言将两个文件的内容合并到第三个文件中
- go mod 引用出错问题排查(ambiguous import: found github.com/ugorji/go/codec in multiple modules)
- 【电商宝scrm分享】3C类目商家如何玩转社群营销
- 安卓录制音频:使用MediaRecord实现
- markdown居中文本
- anki本地服务同步
- mysql的着重号_MYSQL
- 手机充不进去电是怎么回事?有什么方法处理
- Centos7 虚拟机 ping: www.baidu.com: Name or service not know错误