L018-crond的生产场景经验小节
L018-crond的生产场景经验小节
怎么说呢,其实L018这节课还是巩固crond的知识,前半堂课主要是解决上堂课老师留的作业(在L017已经更新,拉到最后),然后剩下的半堂客主要是讲解了一些生产场景实例,不过大多数还是总结要点,所以这篇主要还是把关于crond定时任务所有的内容做一个总结贴出来,以后使用crontab时可以参考,下面开始:
企业生产场景如何调试crontab定时任务
一、增加执行任务频率调试任务(某些任务不能用于生产环境)
在调试时,把任务执行频率调调快一点,如:每分钟、每5分钟执行一次,或者笔当前时间退出5分钟以后,看能否执行,是不是按照你的想象去执行了,如果整整没问题,再改成需要的任务的执行时间。
注意:有些计划任务不允许频繁执行的,例如:定时往数据库里插数据,这样的任务就要在测试机上测试好,然后部署到正式线上,这样正式工作的问题的寄回就少了。
规范的操作流程:个人的开发配置环境-->办公室的测试环境-->idc机房的测试环境-->idc机房的正式环境
使用log文件调试任务,把/dev/null 2>&1换成某一对象定向,这样通过看文件就可知道定时任务是否执行,是正确还是错误。
二、调整系统时间调试任务(不能用于生产环境)
用正确的执行任务的时间,设置完成后,可以修改当前时间,改成任务执行时间的前几分钟来测试(或者重启定时任务服务)。如:定时任务9:00执行,我们可以把系统时间改成8:55分,然后观察是不是正确执行了,当前时间比任务时间要提前足够长,如果是生产环境服务器不可以这样处理,测试环境可以使用这个手段。
例如:周三的2:00执行。
把系统时间调整为周三凌晨1:55分(至少5分钟)
三、通过脚本日志输出调试定时任务
在脚本中加入日志输出,然后把输出打到指定的日志中,然后观察日志内容结果,看是否执行或正确执行。或像下面的内容把脚本结果定向到一个log文件里,重定向“>”即可。不需要“>>”追加,这样日志就不会一直变大,如/app/log.log。也可以在脚本里面打日志。
这个就是我在第一方面里后面说的话。
四、注意一些任务命令带来的问题
注意:*/1 * * * * echo "==" >> /tmp/oldboy.log >/dev/null 2>&1这是隐蔽的无法正确执行的任务配置,原因是前面多了">>",或者去掉结尾的>/dev/null 2>&1。
强调:此问题时因为前面已经有重定向,后面要去掉>/dev/null 2>&1
五、注意环境变量导致的定时任务故障
在调试java程序任务的时候,注意环境变量,把环境变量的定义加到脚本里。
六、通过crond定时任务服务日志调试定时任务
查看定时任务服务日志
[root@moban ~]# tail -f /var/log/cron
由此来找到出问题的时间点,给解决问题带来抓手
七、其他稀奇古怪的问题调试方法
结合前面1-6的方法就可以解决几乎所有遇到的问题,此类问题主要是多看crond服务日志,并且把程序输出到指定日志分析。
关于编写定时任务的方法要领总结:
要领1:为定时任务规则加必要的注释
要领2:执行shell脚本任务前加/bin/sh
要领3:定时任务命令或脚本的结尾加>/dev/null 2>&1
要领4:定时任务命令或程序最好写到脚本里执行
要领5:在指定用户下执行相关定时任务
要领6:在生产任务程序不要随意打印输出信息 tar zcf echo 123 >a.log
要领7:定时任务执行的脚本要规范路径
要领8:配置定时任务规范操作过程
生产应用问题10箴言
1.系统环境变量问题
2.定时任务要用绝对路径
3.脚本权限问题加/bin/sh
4.时间变量问题要用反斜线 如“%”
5.>/dev/null 2>&1问题 (1>/dev/null 2>/dev/null)防止占满inode
6.定时任务规则之前加注释
7.使用脚本替代命令定时任务
8.避免不必要的程序及命令输出
9.切到目标目录的上一级打包目标
10.定时任务脚本中的程序命令用全路径
还有一个小问题
当文件太多,使用rm -fr *.* 无法删除的时候,我们可以使用下面的命令
1.ls | xargs rm -f
2.find ./ -typr -f | xargs rm -f
3.删除原文件夹,但是前提记住原目录属性,重新建立后恢复(但是一定要小心谨慎)
最后,学linux也已经有一阵子了,发现前面的也快忘差不多了,下周一周的时间我会统一复习一下之前的课程内容作为巩固,可能会更新一篇心得吧。
L018-crond的生产场景经验小节的更多相关文章
- 生产场景NFS共享存储优化及实战
生产场景NFS共享存储优化: 1.硬件:sas/ssd磁盘,买多块,raid0/raid10,网卡好 2.NFS服务器端优化加all_squash,async /backup/NFS 192.168. ...
- 根据生产场景对Linux系统进行分区
转自:http://oldboy.blog.51cto.com/2561410/629558 老鸟谈生产场景如何对linux系统进行分区? █ 前言: 我们买房子时,会考虑1室1厅,2室1厅, ...
- Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化
需要的联系我,QQ:1844912514
- 互联网公司linux运维生产场景常用软件工具一览
linux的世界真的很精彩,还没入门的朋友赶紧进来吧! 操作系统:Centos※,Freebsd,Ubuntu,Redhat linux,suse linux网站服务:apache※,nginx※,l ...
- NFS生产场景优化
1.硬件上多块网卡bond,增加吞吐量,至少千兆.sas/ssd磁盘组raid5或raid10 2.服务端配置:/data 172.16.1.0/24(rw,sync,all_squash,anonu ...
- oracle经验小节2
1,instr 函数 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置. 语法如下: instr( string1, string2 [, start_position ...
- Linux实战教学笔记21:Rsync数据同步工具
第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...
- Linux系统——Rsync数据同步工具
Rsync的优点及缺点 优点:类似cp命令.scp命令,但rsync为增量复制工具 缺点:针对大文件,效率非常高(打包再比对),针对小文件,效率非常低. Rsync作用 (1)可使本地和远程两台主机之 ...
- 【基础】:Rsync数据同步工具
第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsync? 1.1.2 Rsync简介 1.3 Rsync的特性 1.1.4 Rsync的企业工作场景说明 1.2 Rs ...
随机推荐
- Kali-linux使用Easy-Creds工具攻击无线网络
Easy-Creds是一个菜单式的破解工具.该工具允许用户打开一个无线网卡,并能实现一个无线接入点攻击平台.Easy-Creds可以创建一个欺骗访问点,并作为一个中间人攻击类型运行,进而分析用户的数据 ...
- 监听器中spring注入相关的问题
问题描述: 需求是要求在项目启动自动触发一个service中的线程的操作,使用监听器来实现,但是自定义监听器中spring注解service失败,通过WebApplicationContextUtil ...
- javaSE web开发 登录思路代码
准备工作: 1.在WebContent WEB-INF lib下添加c3p0-0.9.5.2.jar mchange-common-java-0.2.11.jar ojdbc6.ja ...
- Oracle 日志挖掘(LogMiner)使用
Logminer依赖于2个包:DBMS_LOGMNR和DBMS_LOGMNR_D,Oracle 11g默认已安装 Logminer 基本使用步骤 <1>. Specify a LogMin ...
- Java并发编程(四)锁的使用(上)
锁的作用 锁是一种线程同步机制,用于实现互斥,当线程占用一个对象锁的时候,其它线程如果也想使用这个对象锁就需要排队.如果不使用对象锁,不同的线程同时操作一个变量的时候,有可能导致错误.让我们做一个测试 ...
- Angular2 报错 ERROR Error: If ngModel is used within a form tag
今天写textarea的双向数据绑定报错,错误如图: 错误代码如下: <div class="form-group"> <textarea id="&q ...
- 给Extjs的window弹窗的关闭事件添加验证
问题:我想在window点击右上角叉关闭时添加一些验证,来确定是否关闭? 实现: 首先想到的是拦截window的关闭事件,在它关闭前添加验证,但是有一个问题是,如何阻止它的关闭和组织关闭后,如何让它再 ...
- python实现用户登录问候
创建一个至少包含 5个用户名的列表,且其中一个用户名为 'admin' .想象你要编写代码,在每位用户登录网站后都打印一条问候消息.遍历用户名列表,并向每位用户打印一条问候消息.添加一条 if 语句, ...
- java业务逻辑,利用hibernate获取所连接的数据库信息
1.本人程序架构是springMVC+hibernate,这次的需求是要针对不同的数据库,做不同的处理. 2.获取所连接的数据库是什么,oracle? mysql? sql server? 基础 ...
- UITextView 光标定位
在使用UITextView的时候, 如何在光标的位置插入字符 或者 图片? 以下Demo为你解答: 应用背景:键盘自定义emoji表情 #pragma mark - KVO - (void)obser ...