Linux系统之crond
Posted jasonminghao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统之crond相关的知识,希望对你有一定的参考价值。
01 Linux系统计划任务
1.Crond计划任务概述
什么是计划任务,计划任务类似于我们平时?活中的闹钟。 在Linux
系统的计划任务服务crond
可以满?周期性执?任务的需求。crond
进程每分钟会处理?次计划任务, 计划任务主要是做?些周期性的任务?前最主要的?途是定时备份数据
Schedule one-time tasks with at. ?次性调度执? at Schedule recurring jobs with cron. 循环调度执? cron Schedule recurring system jobs. 所有计划任务执?中的输出都会以邮件的?式发送给指定?户, 除?重定向
//循环调度执?cron 进程每分钟会处理?次计划任务
[root@xmh ~]# systemctl status crond.service
[root@xmh ~]# ps aux |grep crond
root 534 0.0 0.1 126232 1592 ? Ss 06:24 0:00 /usr/sbin/crond -n
计划任务分为以下两种情况:
1.系统级别的定时任务:
清理系统缓存
临时?件清理
系统信息采集
?志?件切割
2.?户级别的定时任务:
定时同步互联?时间
定时备份系统配置?件
定时备份数据库?件
2.crond配置?件详解
?件 说明
/etc/crontab #Crontab配置?件
/etc/cron.deny #该?件中所列?户不允许使?crontab命令
/var/spool/cron/* #所有?户定时?件都存放此?录,?件以?户名命名
/var/log/cron*/ #定时任务执?后的?志?件,可?来回溯
3.crond计划任务管理
参数 含义 指定示例
[root@xmh ~]# crontab --help
-e 编辑crontab?件内容 crontab -e
-l 查看crontab?件内容 crontab -l
-r 删除crontab?件内容 crontab -r
-u 管理其他?户的计划任务 crontab -u xmh -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表示周六、?、四
# /1 表示每隔n单位时间, 如*/10 每10分钟
crond编写示例
00 02 * * * ls. #每天2:00整
00 02 1 * * ls. #每?1号2:00整
00 02 14 2 * ls #每年2?14号2:00整
00 02 * * 7 ls #每周?2:00整
00 02 * 6 5 ls #每年6?的周五2:00整
00 02 14 * 7 ls #每?14号2:00整或每周?2:00整,这两个时间都执?
00 02 14 2 7 ls #每年 2 ? 14 号 2:00 整 或者 每周? 2:00 整,这两个时间都执?
00 06-12/2 * * * #每天早上的6点到12点,每隔2小时
00 02 * * * ls #每天2:00整
* 02 * * * ls #每天2:00中的每?分钟 (逻辑错误)
* * * * * ls #每分钟执? ls
* * 14 2 * ls #2?14号的每分钟(逻辑错误)
*/5 * * * * ls #每隔5分钟
00 02 * 1,5,8 * ls #每年1,5,8?的每天2:00整
00 02 1-8 * * ls #每?1到8号的2:00整
crond书写规范
//1.为计划任务增加必要的注释
[root@xmh ~]# crontab -l
##time sync by xmh 2018-00-00 */5 * * * * /usr/sbin/ntpdate time.windows.com &>/dev/null
//规范计划任务执?脚本存放的路径/server/scripts/
[root@xmh ~]# crontab -l
##backup www to /backup xmh 2018-00-00
00 01 * * * /bin/sh /server/scripts/www_backup.sh &>/dev/null
//3.执?shell脚本任务前加/bin/sh, 脚本结尾加&>/dev/null
//调试好后应屏蔽debug输出信息,避免产?系统垃圾占?过多inode, 如需输出?志, 可重定向??志?件
[root@xmh ~]# crontab -l
####backup www to /backup xmh 2018-00-00
00 01 * * * /bin/sh /server/scripts/www_backup.sh &>/dev/null
4.crond配置编写实例
[root@xmh ~]# crontab -e
//每天凌晨切割nginx?志
00 00 * * * /bin/sh -x /server/scripts/cut_nginx.sh &> /soft/scripts/log/nginx.log
//每天5点备份数据库
00 05 * * * /bin/sh -x /server/scripts/dump_sql.sh &>/soft/scripts/log/mysql.log
//每5分钟检测数据库是否正常
*/5 * * * * /bin/sh /server/scripts/start_mysql.sh &>/dev/null
//注意:
1.我们所有的crond服务是运?的程序。?crontab命令?户?来设置定时规则的命令。
2.crond服务是企业?产?作中常?的重要服务,at很少使?,可以忽略。
3.?乎每个服务器都会?到crond服务。
5.crond计划任务调试
1.调整任务每分钟执?, 检测是否是否正常, 有些任务不要频繁执?
2.调整系统时间然后在检测任务, ?产不建议直接使?此?式
3.执?脚本, 将脚本执?输出写?指定?志?件, 观察?志内容是否正常
4.注意?些任务命令带来的问题echo “xmh” >>/tmp/xlw.log &>/dev/null
5.命令使?绝对路径, 防??法找到命令导致定时任务执?故障
6.查看/var/log/cron
?志进?调试
建议: 建?/server/scripts
?录统?存放脚本,将需要定期执?的任务写?脚本中, 脚本中命令必须使?绝对路径,?动执?脚本检测输出是否正常, 然后将脚本加?计划任务测试, 测试 后?问题将脚本输出写?对应的?志?件中即可。
- 1.?动执?保留执?命令的正确结果
- 2.编写脚本
- 脚本需要统?路径/soft/scripts
- 脚本开头建议填写注释信息, 包括执?时间、周期、任务
- 脚本内容复制执?成功的命令?脚本?件中(减少每个环节出错?率)
- 脚本内容尽可能的优化, 使??些变量或使?简单的判断语句
- 脚本执?的输出信息不要随意打印, 可以重定向?其他位置保留或丢??洞
- 3.执?脚本
- 使?bash执?, 防?脚本没有增加执?权限(/usr/bin/bash)
- 执?命令以及脚本成功后并复制该命令
- 4.编写计划任务
- 加上必要的注释信息、?、时间、任务
- 设定计划任务执?的周期
- 粘贴执?脚本的命令(不要?敲)
- 5.调试计划任务
- 增加任务频率测试、调整系统时间测试(不能?于?产)
- 检查环境变量问题、检查crond服务产??志进?排查
以上是关于Linux系统之crond的主要内容,如果未能解决你的问题,请参考以下文章