zoukankan      html  css  js  c++  java
  • linux系统定时任务

    linux系统crond的定时任务

    1、linux系统自身定期执行的任务工作:系统周期性自行执行的任务工作,如轮询系统日志、备份系统数据、清理系统缓存等,这些任务无需我们人为干预。

    2、用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步,每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要每个用户自行设置才行。

    例如:服务器时间同步

    [root@redhat~]#  crontab  -l

    3、指令选项说明含义表

    -l:查看crontab文件内容。提示:l可理解为list的缩写。

    -e:编辑crontab文件内容,提示:e可理解为edit的缩写。

    -i:删除crontab文件内容,删除前会提示确认。用的很少。

    -u  user:指定使用的用户执行任务。

    特别强调:-i,-r参数在生产中很少用,没什么需求必须要用-e进去编辑即可

    补充:crontab{-l | -e}实际上就是在操作 /var/spool/cron/ 当前用户这样的文件

    4、crontab语法格式中时间段含义

    段                 含义                 取值范围(整数)

    第一段          代表分钟              00-59

    第二段          代表小时              00-23

    第三段          代表日,天          00-31

    第四段          代表月份              00-59

    第五段          代表星期,周几    0-7(0和7都代表星期日)

    5、crontab语法格式中特殊符号含义

    *:*号,表示任意时间都,实际就是“每”的意思。例如:00  23  *  *  *  cmd 表示每月每周每日的 23:00 都执行 cmd 任务。需要注意的是:每个时间位上的 * 表示每,如果位上是 * 就是该位上时间的取值范围,例如:小时上的 * 等价于 00-23。

    经验技巧:定时任务规则如果到小时,口述时就最多提每天。

    分位上的 * 就等价于 0-59,表示每分。

    -:减号,表示分隔符,表示一个时间范围,区间段,如 17-19 点,每天的 17,18,19 的 00 分执行任务。00  17-19  * * * cmd。就是 17,18,19 点整点分别执行的意思。

    ,:逗号,表示分隔时段的意思。30  17,18,19  * * * /bin/sh /scripts/xxx.sh 表示每天 17、18和19 点的半点时刻执行 /scripts/xxx.sh 脚本。也可以和 “-” 结合使用,例如:30  3-5,17-19 * * * /bin/sh /scripts/xxx.sh

    /n:n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成 */10 * * * * cmd,其中, */10,* 的范围是 0-59,因此,也可以写成 0-59/10

    工作中调试时任务的方法:

    1、增加执行任务频率调试任务

         每分钟或者系统时间之后5分钟执行,看看结果对不对

         某些任务不能用于生产环境没有测试机会

         代码、配置变更发布流程:个人开发环境——办公测试环境——IDC机房测试环境——IDC正式环境(分组,灰度发布)

    2、调整系统时间调试任务(不能直接用于生产环境),保持5分钟

    3、通过脚本日志输出调试定时任务

    4、注意一些任务命令带来的问题

    例如:

    标准输出多了

    */1  *  *  *  *  echo  "=="  >>  /tmp/xxx.log  >/dev/null  2>&1

    百分号转义(脚本无需转义)      

    */1  *  *  *  *  tar  zcf  /tmp/xxx_$(date  +%F).tar.gz  /etc/hosts  > /tmp/xxx.log

    5、注意:环境变量导致的定时任务故障(java)

    6、通过crond定时任务服务日志调试定时任务(/var/log/cron)

    7、sh  -x  调试脚本

    企业生产环境案例:linux定时任务生产java服务无法执行问题案例

    http://blog.51cto.com/oldboy/1541515

    crontab生产问题案例及解决过程

    面试题:在系统维护的时候,创建文件提示“NO  space  left  on  device”,请问你这是什么故障?

    解答:磁盘空间block满了或者inode被占满了

    企业案例:inode被填满

    问题:服务器上发生了“NO  space  left  on  device”,df  -h发现没满,为什么?

    centos5  sendmail 临时队列目录  /var/spool/clientmqueue

    centos6  postfix 临时队列目录  /var/spool/postfix/maildrop/

    默认定时任务执行时会给root发邮件,如果邮件服务不开,就会把邮件堆到上述目录

    当定时任务结尾不加 >/dev/null  2>&1 的时候,定时任务就会把上述目录填充大量小文件

    postfix关闭:/etc/init.d/postfix  stop

    例题:

    1、在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab中的语句

    15  03  *  *  6  /usr/bin/perl  /home/shell/collect.pl  >/dev/null  2>&1

    chmod  +x  /home/shell/collect.pl

    15  03  *  *  6  /home/shell/collect.pl  >/dev/null  2>&1

    2、crontab在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现

    00  06-12/2  *  /bin/sh  /usr/bin/httpd.sh  >/dev/null  2>&1

    3、网站访问慢的案例

    linux  java/http/php中某一个进程占用CPU很高

    解决案例:

    top  -p  32311

    strace  -p  32311

    案例文档:

    http://blog.linuxxeye.com/343.html

    http://www.tuicool.com/articles/YFVbia

    http://blog.sina.com.cn/s/blog  48eef8410101fl4p.html

     

  • 相关阅读:
    安装Python,输入pip命令报错———pip Fatal error in launcher: Unable to create process using
    转摘python3.4 + pycharm 环境安装 + pycharm使用
    canvas学习总结三:绘制路径-线段
    Canvas学习系列二:Canvas的坐标系统
    Canvas学习系列一:初识canvas
    正确理解——容错、高可用和灾备
    nginx学习(三)——nginx高可用方案nginx+keepalived
    nginx学习(二)——模块指令介绍
    win10下VMware15安装centos7
    centos7 安装jdk8
  • 原文地址:https://www.cnblogs.com/axzq/p/9621407.html
Copyright © 2011-2022 走看看