在linux系统中实现定时任务的方法不只是crontab,还有其他的
比如
- 利用crond 服务实现定时任务 ******
- 利用atd 软件实现定时任务 类似闹钟 一次设置, 只执行一次
- 利用anacron 软件实现定时任务 系统默认设置定时任务 设置时间不灵活
/etc/cron.daily — 周期为每天 24小时计算为一天
/etc/cron.hourly — 周期为每小时
/etc/cron.monthly — 周期为每个月
/etc/cron.weekly — 周期为每周
他们的意义就是为了周期性的执行某些任务
概念介绍: 周期性, 让系统完成相应操作任务
作用说明: 1) 周期性, 进行数据备份操作
2) 周期性, 重启服务程序 tomcat–java–耗费内存 移动互联网
3) 周期性, 切割日志信息
4) 周期性, 执行脚本文件
软件包名字:
1.查询命令的绝对路径
[root@localhost ~]# which crontab
/usr/bin/crontab
2.根据软件包中的绝对路径命令查询软件包名字
[root@localhost ~]# rpm -qf /usr/bin/crontab
cronie-1.4.11-23.el7.x86_64
3.查看系统是否安装软件包
[root@localhost ~]# rpm -qa cronie
cronie-1.4.11-23.el7.x86_64
软件的各种文件
[root@localhost ~]# cat /etc/crontab —实例文件
[root@localhost ~]# cat /var/spool/cron/root—配置文件(设置文件和命令配置效果一样)
[root@localhost ~]# cat /var/log/cron 定时任务的日志文件通过查看日志文件检测是否执行
[root@localhost ~]# cat /var/spool/mail/root —邮件服务文件(如果定时任务出现错误就会追加文件内容导致文件变大)
还有一个关闭邮件服务后产生小文件的,不过不记得了。
就是这个文件
/etc/cron.deny 这个文件是黑名单,写谁就是不允许谁编写定时任务
配置方法
通常定时任务和脚本结合使用。
crontab -e 编写 (有语法错误提示)
crontab -l 查看
vim /var/spool/cron/root 编写配置文件
* * * * *
分 时 日 月 周
0 15,20 * * * /bin/sh /server/scripts/cut_log.sh 下午三点和晚上八点执行任务
0 9-12 * * * 在9 -12每个小时点执行
0 */2 * * * 每隔两个小时执行一次
0 5-10/2 * * * ??? 5点到10点时间内, 每隔2个小时执行定时任务
*(每) */n(每隔多久) n-m(从n到m整点执行) n,m(n和m整点执行)
建议星期信息和日期信息不要同时配置
0 1-5/2 * * * 学习
意思: 凌晨1点-5点之间每隔2个小时执行定时任务
错误的理解方式:
0 5/3 * * * ??? 不能这样配置
0 5,7,10/2 * * * ??? 不能这样配置
特殊说明:
偶数每隔2个小时
在配置时间时需要注意 0 */2 * * * 的意思是说每隔两个小时的偶数时间
每隔两个小时的偶数时间执行一次,也就是说:2 4 6 8 10 12
奇数每隔两个小时
实现方法:
方法1;
0 1-23/2 * * * echo oldboy69 > /tmp/test_crond.txt
方法2:
59 */2 * * *
编写说明:
1.将任务命令进行测试
2编写定时任务
3测试定时任务是否执行
特殊:
1.在定时任务中使用命令的绝对路径
2.定时任务无法识别特殊符号
解决方法:
将有特殊符号的命令信息放入脚本文件中
将有些特殊定时任务不能是识别符号进行转义
3.定时任务产生的输出信息会占用磁盘空间
* * * * * cp /etc/hosts /backup/hosts.bak &>/dev/null
* * * * * cp /etc/hosts /backup/hosts.bak >/dev/null 2>&1
&>/dev/null 或者 >/dev/null 2>&1 将定时任务执行时产生信息放入到黑洞中
避免信息占用磁盘空间
4.编写脚本也好还是定时任务也好,加上注释信息
日志信息说明:
Dec 25 09:01:02 oldboy69 anacron[7025]: Will run job `cron.daily' in 29 min.
Dec 25 09:01:02 oldboy69 anacron[7025]: Jobs will be executed sequentially
① ② ③ ④
1定时任务出发时间信息
2定时任务执行主机名称
3定时任务触发方式
CROND配置定时任务
anacron系统默认定时任务(每天 每周 每小时目录)
4执行任务信息(用户信息)
遇到的问题
1.日志文件说没有什么问题但是就是没有效果
解答
是因为在crontab里面使用的命令都应该是绝对路径,不应该是直接使用命令。
杂碎
1./dev/null 系统黑洞
2.systemctl stop postfix.service 关闭邮件服务
3.日志文件的切割其实就是更改日志文件的名字,但是改名的日志文件需要源文件时不能是自己手动创建的,是系统重启服务时生成的,所以也要重启服务。
比如
4.疑问:
学完后感觉将正确的和错误的信息都放入黑洞中,如果随着时间的推移,环境可能会有一些变化,开始定时任务是一直执行的,如果因为环境的原因定时任务执行出现错误,但是反馈的信息都被放入黑洞了,我意识到出现错误了呢?
解答:
部署监控服务,使用监控服务来使定时任务出现错误时报警,让你知道。
注意:测试定时任务之前将时间先设定为00:00,再编写定时任务然后再设定时间进行测试。
让系统识别时间的逻辑性正常,避免出现bug