定时任务就是将设定好的操作按照时间周期进行自动操作,省时省力。
一、定时任务软件分类
1、cronie
2、atd
定时任务只执行一次
3、anacron
只适合非24小时运行的服务器
二、系统定时任务实现类型
1、系统默认设置好的定时任务
日志文件进行切割处理的服务:logrotate 配置文件:/etc/logrotate.conf
[root@oldboysz-01 ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
#每周
# keep 4 weeks worth of backlogs
rotate 4
#只保留最近4周的日志信息
# create new (empty) log files after rotating old ones
create
#切割后创建一个新的空日志文件
# use date as a suffix of the rotated file
dateext
#以日期作为后缀名
# uncomment this if you want your log files compressed
#compress
#将大文件压缩处理
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
#包含这个目录下的配置信息
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
系统四个重要定时任务目录
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
2、用户自定义设置的定时任务
定时任务配置:一个命令crontab 一个文件/var/spool/cron/用户名
命令:crontab -- 设置 或 查看定时任务信息的命令
-u <user> define user -- 定义以什么用户身份进行定时任务设定
-e edit user's crontab -- 编写定时任务配置文件 crond table
-l list user's crontab -- 显示定时任务配置文件信息
-r delete user's crontab -- (一定不要使用)
-i prompt before deleting -- 同cp -i
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging -- 进入调试模式
三、系统自带cronie定时任务配置
1、服务是否正常运行:
systemctl status crond.service
systemctl is-active crond.service
2、服务是否设置开机自启动:
systemctl status crond.service
systemctl is-enabled crond.service
3、定时任务参考文件 /etc/crontab
[root@oldboysz-01 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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
# | | | | |
# * * * * * user-name command to be executed
4、编写定时任务:crontab -e
PS:此命令有语法检查功能,/var/spool/cron/root文件没有语法检查功能编写时间同步的定时任务
编写时间同步的定时任务
yum install -y ntp
ntpdate ntp1.aliyun.com
强调说明:在设置定时任务的时候,日期 和 周不能同时出现
第一个历程:测试定时任务中的执行命令
ntpdate ntp1.aliyun.com
2 Nov 10:34:11 ntpdate[1558]: adjust time server 120.25.115.20 offset -0.002042 sec
第二个历程:编写定时任务信息
crontab -e
# crond-01 sync time info 同步时间信息
*/10 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
第三个历程:检查定时任务效果
a. 调整时间信息,让时间过的快一点 12:00 --调整 12:05 -- 12:10
b. 调整配置文件中的时间 * * * * *
第四个历程:排查故障
关注日志信息 /var/log/cron
crontab -l 查看所编写的配置
定时任务配置文件中的符号信息
* 每xxx 每分钟 每小时 每天 每月 每周
/n 每隔什么 每隔10分钟 ?
- 时间的范围 00 12-16 * * *
, 不连续的时间范围 00 12,15,18 * * *
需求:每个一个小时 xx
*/60 */1 * * *
强调说明:/ - ,这些符号出现的时候,如果出现在小时 尽量分钟要有具体设置 默认*
如果出现在天 尽量小时和分钟都要有具体设置
四、系统自带的cronie定时任务重要文件信息
1、/var/spool/cron/root
定时任务编写文件(一般用crontab -e)
2、/var/log/cron 日志文件
保存定时任务执行记录
3、/etc/cron.deny
用于阻止某些用户不能使用定时任务
五、定时设置注意事项
01. 在定时任务中不能识别一些特殊的符号信息 --- 利用脚本编写定时任务
02. 一些文件路径,要编写为绝对路径信息
03. 一些执行命令,在定时任务中出现的时候,也尽量用绝对路径
定时任务运行的时候,识别的环境变量信息$PATH=/usr/bin:/bin
04. 定时任务每个信息前面,要有注释说明
05. 当操作的命令任务,超过两个命令才能完成的时候,尽量编写标本
06. 在定时任务中,每个任务的结尾最后加上 &>/dev/null (避免磁盘空间被占用)
07. 让一些命令操作不要产生输出信息
tar zcf /backup/backup.tar.gz /etc/ --- 尽量不要加上 -v参数
尽量在要压缩数据的上一级目录进行打包压缩(相对路径方式)
====================================================================
You have new mail in /var/spool/mail/root
为什么生成这个信息:是由一个邮件服务控制的
解决问题:
关闭postfix服务
邮件信息就会保存在/var/spool/postfix/maildrop/ 生成文件是大量小文件
为什么会产生邮件信息:
定时任务操作错误 操作失败 会产生错误邮件信息
====================================================================