
1. 什么是定时任务在固定时间内重复做具体的事情2. 定时任务分类crond(crontab)定时任务软件(cronie) atd 运行一次 anacron 非7*24小时运行的服务 知识点补充 rpm -qa 软件包名 #查看该软件是否被安装 rpm -ql 软件包名 #安装软件的路径 rpm -qc rpm -ivh 软件包名 #安装该软件 rpm -e 软件包名 #卸载该软件 例如 [rootlxj ]# rpm -qa | grep cronie #查看该软件是否已安装 [rootlxj ]# rpm -qa #查看系统中已安装的所有软件3. crond 定时任务分类 用户定时任务和系统定时任务一、系统定时任务 /etc/cron.hourly #系统定时任务每小时运行这个目录内的内容 /etc/cron.daily #系统定时任务每天运行这个目录内的内容 /etc/cron.weekly #系统定时任务每周运行这个目录内的内容 /etc/cron.monthly #系统定时任务每月运行这个目录内的内容 ###如果系统中毒后会自动运行里面的内容### /etc/crontab #系统定时任务的配置文件之一 系统定时任务logrotate命令 完成对 日志的切割、日志轮询等 /var/log/cron /var/log/messages /var/log/secure等日志的切割和轮询 二、用户定时任务 crontab -l #查看用户的定时任务 cron table crontab -e #编辑用户的定时任务 /var/spool/cron/root #root是用户名root用户的定时任务 #其他的普通用户若配置定时任务也会产生同样的目录/var/spool/cron/xxx4. 定时任务的使用1. 定时任务依赖的软件/服务 是否可用 a 查看当前是否正在运行定时任务 centos 6.x /etc/init.d/crond status|start|stop|restart centos 7.x systemctl status crond.service systemctl is-active crond.service ps -ef | grep crond b 查看crond是否开机自启 centos 6.x chkconfig crond centos 7.x systemctl status crond systemctl is-enabled crond 2. crontab命令如何使用 crontab -e #edit 编辑当前用户的定时任务 实质就是编辑 /var/spool/cron/root crontab -l #list 查看当前用户的定时任务 实质就是查看 /var/spool/cron/root 为什么要使用crontab命令因为crontab命令有语法检查功能可以检查语法对不对 3. 定时任务的相关文件 a /var/spool/cron #定时任务的配置文件所在的目录 b /var/log/cron #定时任务的日志文件 c /ect/corn.deny #禁止那个用户使用定时任务 定时任务的黑名单 4. 定时任务基本格式(分时日月周) 口诀什么时间做什么事情然后再想下一次什么时候执行5. 定时任务的配置方式 (两种方式任选其一配置不要同时配置哦)1. 定时任务的配置方式:修改系统的配置文件 [rootlxj ~]# vim /etc/crontab 配置定时任务直接使用vim编辑/etc/crontab文件 查看定时任务cat /etc/crontab 2. 定时任务的配置方式:用户定时任务 /var/spool/cron/root #root定时任务的配置文件 /var/spool/cron/oldboy #oldboy用户定时任务的配置文件 配置定时任务 使用命令:crontab -e 编辑用户的配置文件 当前登录用户rootcrontab -e vim /var/spool/cron/root 查看定时任务crontab -l 相当于cat /var/spool/cron/root 3. 排查定时任务问题查看两个文件 定时任务的日志/var/log/cron 系统邮件日志此邮件会更加的详细/var/spool/mail/root6. 定时任务综合案例方式1 [rootlxj ~]# crontab -l # 1.每分钟输出自己的姓名到/tmp/name.txt * * * * * echo lyp /tmp/name.txt [rootlxj ~]# 方式2 [rootlxj ~]#vim /etc/crontab # 1. 每分钟输出自己的姓名到/tmp/name.txt * * * * * root echo lyp /tmp/name.txt语法格式 系统定时任务/etc/crontab * * * * * #五颗星分别代表什么含义 第一颗星 分钟 0-59 每分钟 第二颗星 小时 0-23 每小时 第三个星 日 0-31 第四颗星 月 1-12 第五颗星 周 0-6 星期天可以用0或者7表示 * 表示每的意思 */n 表示时间间隔n分钟 */5 每5分钟 - 从哪里来到哪里去 07-08 , 表示分隔 为了更好的理解我们举例理解 a 每分钟把自己的名字 追加到 /tmp/name.txt 思考 如何显示自己的名字并放入到文件中使用什么命令 定时任务如何书写 测试看结果 遇到错误如何拍错方式1 [rootlxj ~]# vim /etc/crontab # 1.每分钟输出自己的姓名到/tmp/name.txt * * * * * root echo lyp /tmp/name.txt 方式2 [rootlxj ~]# crontab -l # 1.每分钟输出自己的姓名到/tmp/name.txt * * * * * echo lyp /tmp/name.txt [rootlxj ~]#凌晨12点表示方式 0 0 * * * 用户语法格式crontab -e vim /var/spool/cron/root7. 案例1. 每天上午8.30分去学校上学 # 每天8.30分去学校上学 30 08 * * * echo go to school 2. 每天晚上12点准备去睡觉 00 00 * * * echo go to bed 3. 每分钟把自己的名字追加到/tmp/name.txt * * * * * echo lyp /tmp/name.txt 分析* 23,00-07/1 * * * 加/1与不加/1是相同的概念都表示每小时的意思!!! 4. 每个5分钟执行一次定时任务 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com #注意用户的定时任务PATH变量只识别/usr/bin/和/bin目录在配置的时候需要指定命令的全路径也可以修改PATH变量 [rootdb01 ~]# crontab -l PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin * * * * * ntpdate ntp1.aliyun.com 使用绝对路径: [rootdb01 ~]# crontab -l * * * * * /usr/sbin/ntpdate ntp1.aliyun.com8. 定时任务注意事项1. 在定时任务中不识别%,如果遇到记得加撬棍或者可以直接将命令写入到脚本中哦 案例1创建一个当前时间命令的文件 [rootdb01 ~]# crontab -l #* * * * * /usr/sbin/ntpdate ntp1.aliyun.com * * * * * mkdir /root/hostname_date \%F-\%M 使用脚本: * * * * * sh /root/1.sh [rootdb01 ~]# cat 1.sh mkdir /root/hostname_date %F-%M # %在定时任务中需要加\或者写入脚本 注意事项 没有开启邮件服务器的情况下 定时任务的结果如果不定向到空或者文件中生成大量的小文件堆积到系统中从而导致inode号码被占满最终导致磁盘无法写入数据。 产生临时小文件的位置 /var/spool/postfix/maildrop/ 关闭邮件服务在查看 systemctl stop postfix systemctl distable postfix 关闭邮件服务会产生大量的小文件如果邮件服务开启则不会产生临时小文件 解决办法 a 将结果定向到空 b 开启邮件服务开启邮件服务损耗服务器性能 c 通过定时任务清理临时文件9. 面试题什么情况下系统的inode号会变满 1. 定时任务若没有开启邮件服务则产生大量的小文件会导致系统的inode号会变满!! 2. 服务运行过程中开发问题导致临时小文件 3. 误操作脚本问题 如何查看大量的小文件呢 分析大量的小文件其实往往都在同一个目录下而大文件则分布在不同的目录下 1. 查找小文件 find / -type d -size 1M 2. 查找大文件 find / -type f -size 100M 或 find / -size 100M10. 小结重点 1. 配置方式 - 系统配置定时任务 vim /etc/crontab - 用户配置定时任务 crontab -e 等同于 vim /var/spool/cron/root 配置方式不同 1 crontab * * * * * root echo lyp /tmp/name.txt 2用户定时任务 * * * * * echo lyp /tmp/name.txt 3系统定时任务和用户定时任务环境变量不同 系统环境变量比用户环境变量多但是都没有系统内置PATH变量多 2. 语法格式 * * * * * 分 时 日 月 周 常用: 分钟 小时 * 每 * * * * * 每分钟执行.. */5 每5分钟 从整点开始计算 1.03创建定时任务 下次执行时间是: 1.05 1.10 00 7-12 * * * 区间范围 执行6次 , 间隔 00 7,10,12 * * * 执行3次 3. 注意事项 1/var/spool/cron/root /var/spool/main/root 2定时任务中不识别%需要加\ 3多条命令使用脚本哦 4用户定时任务需要重新加载PATH变量可以与内置PATH相同 5关闭邮件会产生临时小文件该如何处理呢定时任务的结果定向到空或者文件中也可以定期清理一下定时任务存放临时小文件的路径即该目录/var/spool/postfix/maildrop/!!