设为首页 收藏本站
查看: 453|回复: 0

[经验分享] Linux系统定时任务Crond

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-4 08:51:38 | 显示全部楼层 |阅读模式
Linux系统定时任务Crond

Crond是什么
Crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件。
特殊需求:(秒级别)crond服务就无法搞定,一般工作中邪脚本守护进程执行(一般用不上)
为什么要使用crond定时任务
Linux系统的定时任务crond,相当于我们平时生活中得闹钟功能。可以满足周期性执行任务的需求。
Linux系统的定时任务
Linux系统中定时任务调度的工作可以分为以下两种情况
1.Linux系统自身定期执行的任务工作:系统周期性执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等

2.用户执行的任务工作:例如每隔5分钟和互联网上时间服务器进行时间同步。一般这些工作需要用户自行设置。
1
2
3
[iyunv@student ~]# crontab -l
####time sync by xuliangwei 2015-07-30
*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1



定时任务crond使用说明
1
2
3
4
5
6
7
8
9
10
11
[iyunv@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)



指令选项说明表
参数含义指定示例
1
2
3
4
5
-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语法格式中时间段含义表
段含义取值范围
1
2
3
4
5
第一段代表分钟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配置文件默认都存放在此目录,文件以用户名命名。
生产中书写定时任务的要领
为定时任务规则加必要的注释
1
2
3
[iyunv@student ~]# crontab -l
####time sync by xuliangwei 2015-07-30
*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1



定时任务命令或程序最好写到脚本里执行
1
2
3
[iyunv@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)
1
2
3
[iyunv@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
1
2
3
[iyunv@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
1
2
3
[iyunv@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定时任务服务日志调试定时任务
1
2
3
[iyunv@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)定时任务脚本中的程序命令尽量用全路径(和环境变量的识别有关)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-93895-1-1.html 上篇帖子: ubuntu进入单用户模式 下篇帖子: linux下磁盘管理命令汇总 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表