热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux系统定时任务Crond

Linux系统定时任务CrondCrond是什么Crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件。特殊需求:(秒级别)crond服务就无法搞定,一般工作中

Linux系统定时任务Crond

Crond是什么

Crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件。

特殊需求:(秒级别)crond服务就无法搞定,一般工作中邪脚本守护进程执行(一般用不上)

为什么要使用crond定时任务

Linux系统的定时任务crond,相当于我们平时生活中得闹钟功能。可以满足周期性执行任务的需求。

Linux系统的定时任务

Linux系统中定时任务调度的工作可以分为以下两种情况

1.Linux系统自身定期执行的任务工作:系统周期性执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等


2.用户执行的任务工作:例如每隔5分钟和互联网上时间服务器进行时间同步。一般这些工作需要用户自行设置。

[root@student ~]# crontab -l
####time sync by xuliangwei 2015-07-30
*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1

定时任务crond使用说明

[root@student ~]# crontab --help
crontab: invalid option -- ‘-‘
crontab: usage error: unrecognized option
usage:  crontab [-u user] file
        crontab [-u user] [ -e | -l | -r ]
                (default operation is replace, per 1003.2)
        -e      (edit user‘s crontab)
        -l      (list user‘s crontab)
        -r      (delete user‘s crontab)
        -i      (prompt before deleting user‘s crontab)
        -s      (selinux context)

指令选项说明表

参数含义指定示例

-e编辑crontab文件内容crontab -e
-l查看crontab文件内容crontab -l
-i删除crontab文件内容,删除前会提示确认Crontab -ri
-r删除crontab文件内容crontab -r
-u指定使用的用户执行任务crontab -u xuliangwei -l

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

crontab语法格式中时间段含义表

含义取值范围

第一段代表分钟00-59
第二段代表小时00-23
第三段代表日期01-31
第四段代表月份01-12
第五段代表星期0-7(0和7都代表星期天)

crontab语法格式特殊符号含义表

特殊符号含义

**号表示任意时间都,就是”每”的意思,举例:如 00 01 * * * cmd 表示每月每周每日的凌晨1点执行cmd命令

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

,逗号,表示分隔符时间段的意思。30 20,21,22 * * * cmd 表示每天20,21,22点得半点执行cmd。 

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


使用者权限及定时任务文件

文件说明

/etc/crontabCrontab配置文件

/etc/cron.deny该文件中所列用户不允许使用crontab命令。

/var/spool/cron所有用户crontab配置文件默认都存放在此目录,文件以用户名命名。

生产中书写定时任务的要领

为定时任务规则加必要的注释

[root@student ~]# crontab -l
####time sync by xuliangwei 2015-07-30
*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1

定时任务命令或程序最好写到脚本里执行

[root@student ~]# crontab -l
####backup www to /backup xuliangwei 2015-07-30
00 01 * * * /bin/sh /server/scripts/www_backup.sh >/dev/null 2>&1

定时任务执行的脚本要规范路径(/server/scripts)

[root@student ~]# crontab -l
####backup www to /backup xuliangwei 2015-07-30
00 01 * * * /bin/sh /server/scripts/www_backup.sh >/dev/null 2>&1

执行shell脚本任务前加/bin/sh

[root@student ~]# crontab -l
####backup www to /backup xuliangwei 2015-07-30
00 01 * * * /bin/sh /server/scripts/www_backup.sh >/dev/null 2>&1

定时任务命令或脚本结尾加>/dev/null 2>&1

[root@student ~]# crontab -l
####backup www to /backup xuliangwei 2015-07-30
00 01 * * * /bin/sh /server/scripts/www_backup.sh >/dev/null 2>&1

在指定用户下执行相关的定时任务

这里要特别注意不同用户的环境变量问题,如果是调用了系统环境变量/etc/profile,最好在程序脚本中将用到得环境变量重新export下。

生产任务程序不要随意打印输出信息

在调试好脚本程序后,应尽量把DEBUG及命令的输出信息屏蔽掉,如果确实需要输出日志,可定向到日志文件里,避免产生系统垃圾。

配置定时任务规范操作过程

1)配置定时任务规范操作过程,防止出错。

2)首先要在命令操作成功,然后复制成功的命令到脚本里,在各个细小环节减少出错的机会

3)然后测试脚本,测试成功后,复制脚本的规范路径到定时任务配置里,不要手敲。

生产中如何调试定时任务

规范的公司开发和运维人员操作流程:

个人的开发配置环境→办公室测试环境→idc机房测试环境→idc机房正式环境。

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

在调试时,把任务执行频率调快一点,看能不能正常执行,如果正常,那就没问题,再改成需要的任务的执行时间。

注意:有些任务时,不允许频繁执行,例如:定时往数据库里插入数据,这样的任务要在测试机上测试好,然后正式线上出问题的机会就少了。

调整系统时间调试任务

用正确的执行任务的时间,设置完成后,可以修改下系统当前时间,改成任务执行时间的前几分钟来测试(或者重启定时任务服务)

注意:(不能直接用于生产环境),保证5分钟

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

在脚本中加入日志输出,然后把输出打到指定的日志中,然后观察日志内容的结果,看是否正确执行。

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

* * * * * echo “xuliangwei” >>/tmp/xlw.log >/dev/null 2>&1 这里隐藏的无法正确执行的任务配置,原因是前面多了>>,或者去掉后面的 >/dev/null 2>&1

注意环境变量导致的定时任务故障

例如:在调试java程序任务的时候,注意环境变量,把环境变量的定义加到脚本里。

通过crond定时任务服务日志调试定时任务

[root@student ~]# tail -f /var/log/cron
Jul 31 12:15:01 student CROND[7530]: (root) CMD (/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1)
Jul 31 12:15:29 student crontab[7527]: (root) REPLACE (root)

生产中定时任务10简言

系统环境变量问题

脚本权限问题加 /bin/sh

实践变量问题用反斜线\%转义,最好使用脚本。

>/dev/null 2>&1问题

定时任务规则之前加注释

使用脚本程序替代命令行定时任务

避免不必要的程序及命令输出

1)切到目标目录的上一级打包目标

2)定时任务脚本中的程序命令尽量用全路径(和环境变量的识别有关)


本文出自 “徐亮伟” 博客,请务必保留此出处http://liangweilinux.blog.51cto.com/8340258/1681210

Linux系统定时任务Crond


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 一、概述nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的 ... [详细]
  • 一、设置时区方法一:使用setup工具setup选择Timezoneconfiguration选择AsiaShanghai空格键勾选上System ... [详细]
author-avatar
Dr_H-鄧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有