一.定时任务作用说明
1.类似生活中使用的闹钟
2.可以自动完成操作命令
3.定时备份系统数据信息
二.定时任务软件种类
1.定时任务软件 cronie ******
默认系统自带定时服务 crond(crontab---定时任务命令)
2.定时任务软件 atd
定时任务只执行一次,一次性定时服务
3.定时任务软件 anacron
非 7*24 小时运行的服务器
4.回顾知识点:如何检查软件是否安装
rpm -qa 软件名 查看系统中是否有指定的软件大礼包
rpm -ql 软件名 查看软件大礼包中都有那些数据信息
rpm -qf 'which 命令' 查看一个命令文件属于哪个软件大礼包
rpm -ivh 软件包.rpm 利用rpm安装软件大礼包
-i install(安装)
-v 显示安装过程
-h human(易读方式)
yum install -y 软件大礼包
yum provides 命令 查询命令属于哪个软件大礼包
5.补充说明:如何让linux和windows主机之间传输数据 命令rz和sz
查看命令属于哪个软件大礼包 rzsz属于lrzsz这个软件大礼包
系统中没有rz这个命令,查看lrzsz软件大礼包是否安装,经查未安装,利用yum命令进行安装
rz -y 从windows上下载数据linux
sz -y 从linux上上传数据到windows
三.定时任务实现方式
1.系统定时任务--系统特殊目录
01.系统定时任务周期:每小时(系统自动运行里面的内容)
控制定时任务目录: /etc/cron.hourly
02.系统定时任务周期:每一天(系统自动运行里面的内容)
控制定时任务目录: /etc/cron.daily
03.系统定时任务周期:每一周(系统自动运行里面的内容)
控制定时任务目录: /etc/cron.weekly
04.系统定时任务周期:每个月(系统自动运行里面的内容)
控制定时任务目录: /etc/cron.monthly
05./etc/cron.deny
06./etc/crontab
系统定时任务的配置文件之一
07.系统定时任务+logrotade命令,完成对日志的日志切割/日志轮询
/var/log/cron /var/log/messanges /var/log/secure
2.用户定时任务
01.用户定时任务查看 crontab -l(list)
说明:列表查看定时任务信息
02.用户定时任务编辑 crontab -e(edit)
说明:编辑配置定时任务信息
crontab -e = vi /var/spool/cron ----- 定时任务配置文件保存目录
/var/spool/cron/root ----- root用户设置的定时任务配置文件
/var/spool/cron/oldboy ----- oldboy用户设置的定时任务配置文件
3.常见信息提示
01.no crontab for root 相应用户没有编辑定时任务
02.Do you want to retry the same edit 定时任务编辑错误是否继续
四.定时任务环境准备
01.确定定时任务服务是否正在运行(系统当前可以使用定时任务)
ps -ef|grep crond
systemctl status crond
02.确认定时任务服务是否开机启动(系统重启后也可以继续使用)
systemctl status crond
五.定时任务服务应用方法
01 配置定时任务服务(crontab -e)
crontab -e = vi /var/spool/cron/root
vi /var/spool/cron/oldboy
当系统中没有编写定时任务文件时,上述所列文件不会存在
02 查看定时任务信息(crontab -l)
crontab -l = cat /var/spool/cron/root
03 定时任务命令作用
1.定时任务命令有语法检查功能,配置文件格式不对会报错
2.定时任务命令使用时简单方便
crontab -e
vi /var/spool/cron/root 编写定时任务时不会对格式进行检查
04 定时任务相关文件
1 /var/spool/cron 定时任务服务配置文件所在目录
/var/spool/cron/root root用户定时任务配置文件
/var/spool/cron/oldboy oldboy用户定时任务配置文件
2 /var/log/cron 定时任务服务运行记录日志文件
01 日志查看命令 head/tail grep/egrep tail -f/F less more
02 日志查看方法
日志追踪: tail -f
3 /etc/cron.deny 定时任务服务禁止用户运行名单
05 定时任务编写格式
1.口诀:什么时间做什么,然后再想下一次什么时候执行 什么时间,做什么事情
01 cat /etc/crontab
定时任务=====>什么时间做什么(重复)
02 定时任务书写例子
30 08 * * * go to school 每天早上八点半,去学校
00 24 * * * go to bad 每天晚上12点,去床上
00 23 29 2 6 make baby 注意:星期几和日期不要同时加上 2月29日 星期六 要使两个条件同时满足时间不定
2 定时任务中常用符号
01 * 每 * * * * * 命令 ---- 表示每分钟
02 /n 每隔n */5 */5 * * * 命令 ---- 表示每隔5分钟,每隔5小时
03 n-m 从n到m 0-59 07-11 * * * CMD ---- 每天早上7点到11点,每分钟运行CMD命令
04 n,m n和m 00 17,19,20 * * * CMD ---- 每天晚上17点和19点及20点整 运行CMD命令
测验01:每天14:30 ,起来学习
30 14 * * *
测验02:每隔三天,夜里两点执行数据备份
00 02 */3 * *
测验03:00/10 01,03 * * * (没这么写的)???? 书写逻辑错误
每天凌晨一点和三点 每隔10分钟0点整 --> 01:00 03:00
测验04:*/10 01-03 * * *
每天凌晨1点到3点每隔十分钟执行 --> 1:00 1:10 .... 3:00
测验05:* 01,03 * * * ??? 书写逻辑错误
每天凌晨1点和3点
测验06:* 01-03 * * *
每天凌晨1点到3点 每分钟执行
测验07:00 02 28 */2 6 ??? 书写逻辑错误
每隔两月的28号凌晨2点
总结:
01.在写时间信息的时候,如果想表示每隔多久执行什么任务 /前面尽量用*表示,不要写具体数值
02.时间信息由左到右依次书写,尽量不要跳步
03.当编写定时任务时,日期信息不要和星期信息同时出现
3 定时任务的编写流程
01 定时任务执行命令规范
1.测试定时执行命令
定时任务执行的命令需要采用绝对路径
上述情形,useradd正常执行没问题,放到定时任务中执行则无法执行
情况说明:
编写一个脚本文件,此文件内容是将路径环境变量的内容输出到一个特定文件
直接用命令执行脚本,命令调用的环境变量信息是系统中路径环境变量
此时用定时任务执行上述脚本,再对输出的路径变量进行查看,发现定时任务只会识别/usr/bin:/bin 两个路径
而uaeradd的执行路径是/usr/sbin/useradd 显然定时任务执行useradd是找不到路径信息,自然无法执行成功
解决办法加绝对路径信息
在执行过程中明明执行命令以添加绝对路径但偏偏执行不成功,查看邮件信息,显示useradd命令打不开/etc/passwd
退出定时任务直接执行也一样,看来是/etc/passwd有问题,经查询发现是前期给予了文件锁止能力,所以命令打不开文件
当我们取消文件的锁止功能后,定时任务命令执行成功
2.编写定时任务信息
定时任务编写时,需要按照语法规范
编写注释信息:以便后期维护知晓次命令是何意思
编写定时任务:* * * * * 命令 先写出格式然后再根据需求进行编写
3.检查定时任务效果
查看定时任务日志
查看定时任务效果
检查命令执行结果
4.排查定时任务问题
查看定时任务日志
查看定时任务效果
02 定时任务执行脚本规范
1.测试定时执行脚本
脚本执行无问题.正常执行
2.编写定时任务信息
sh在定时任务命令执行路径变量中
3.检查定时任务效果
查看定时任务日志
查看定时任务效果
4.排查定时任务问题
查看定时任务日志
查看定时任务效果
06 定时任务编写案列
1 定时编写文件信息
每分钟将自己的名字追加到/oldgirl/oldgirl.txt中
1.测试定时执行命令 echo "wwl" >>/oldgirl/oldgirl.txt
2.编写定时执行任务信息 crontab -e
# edit name input file
* * * * * echo "wwl" >>/oldgirl/oldgirl.txt
3.检查定时任务效果
01 查看定时任务配置文件
crontab -l = cat /var/spool/cron/root
02 查看定时任务日志信息
tail -f /var/log/cron tail -f /oldgirl/oldgirl.txt(追踪文件内容)
3.定时重启系统服务
每天23到第二天7点每隔1小时重启nginx服务
1.测试定时执行命令
六.定时任务重点知识总结
定时任务的9个劝告:
1.定时任务规则之前加注释 表示定时任务在干什么
2.使用脚本替代命令执行定时任务
超过两条命令,就用脚本
脚本相当于命令的合集
编写脚本文件
编写定时任务
3.定时任务中的命令记得写成绝对路径,最好文件信息也写成绝对路径
4.编写定时任务时,可以将输出到屏幕上的信息保存到黑洞中,避免占用磁盘空间
说明:定时任务中执行命令.如果产生输出到屏幕上的信息,都会以邮件的方式告知用户
此时上述文件会不断变大占用磁盘block空间
systemctl stop postfix 关闭邮件服务
当关闭邮件服务时,系统将会不断产生一些小文件,会占用磁盘inode空间
systemctl start postfix 开启邮件服务
当上述两种方式自相矛盾是唯一的解决办法就是,定时任务执行过程中输出的信息重定向到/dev/null黑洞文件中.就不会占用空间
5.编写任务时,尽量不要产生屏幕输出信息
命令和文件都写绝对路径,以防止错误信息输出,对于一些显示过程的命令参数,最好取消
比如tar -zcvf -v是显示压缩过程,如果写在命令中记得取消-v参数
最好的方式是无论错误还是正确的屏幕输出信息都丢到黑洞中 /dev/null
6.定时任务中调用的命令路径环境变量是 /usr/bin:/bin
对于不是在上述两个路径中的命令记得要写绝对路径,所以在编写定时任务之前,对于命令来说最好先确定命令的路径,以防万一都写成绝对路径
上述遇到的问题中,注意某些文件的权限也会阻止命令的执行
比如/etc/passwd由于加了锁止权限 chattr +i /etc/passwd 导致命令 useradd无法正常执行
解决办法是去掉/etc/passwd的锁止权限.