定时任务就是将设定好的操作按照时间周期进行自动操作,省时省力。


一、定时任务软件分类

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/ 生成文件是大量小文件

为什么会产生邮件信息:

定时任务操作错误 操作失败 会产生错误邮件信息

====================================================================