4.定时任务

定时任务说明

定时任务: 让系统周期性完成运维人员重复工作

定时任务使用场景举例:
· 实现定时备份服务器数据
· 磁盘空间不足报警
· 实现数据压缩备份
· 定期重启服务程序
· 定期检查服务状态

定时任务实现方式:

方式一: crond 软件 cronie 可以灵活调整时间, 实现完成相应任务
方式二: atd 软件 设置一次定时任务, 只能执行一次任务(临时执行一次)
方式三: anacron 软件 实现定时任务时间有局限性

补充: anacron如何实现定时任务:
/etc/cron.daily   --- 目录中脚本文件会按照每天(24小时)自动执行
/etc/cron.hourly  --- 目录中脚本文件会按照小时自动执行
/etc/cron.monthly --- 目录中脚本文件会按照月份自动执行
/etc/cron.weekly  --- 目录中脚本文件会按照星期自动执行

例:vim test_daily.sh (执行权限)
echo test-$(date +%F_%T) >> /tmp/test_daily.txt

定时任务实际配置

定时任务服务确认是否安装,是否启动:
rpm -qa cronie cronie软件包
cronie-1.4.11-19.el7.x86_64

systemctl status crond crond服务

编写定时任务:
格式:时间信息 任务信息

设置时间方法:

	* 每
	* * * * *   分 时 日 月 周
	每分钟(0-59) 
	每小时(0-23) 
	每天(1-31) 
	每月(1-12) 
	每周(0-6) 
	
	*/n  间隔多久完成相应任务,间隔时间一定是n整数倍时间, 执行定时任务
	n-m  在指定连续时间范围内完成相应任务
	n,m  在指定不连续时间范围内完成相应任务

编写定时任务:crontab -e 或者(vim /var/spool/cron/root --- 没有语法检查)

crontab 参数:

  -l  #查看定时任务列表  	
  -e  #编辑定时任务内容,edit的缩写,编辑完成后,保存退出,这个定时任务就实际写入/var/spool/cron目录中,每个用户的定时任务用自己的用户名进行区分,而且crontab命令只要保存就会生效
  -u  #指定使用的用户来执行任务
  -r  #删除用户的定时任务内容
  -i  #删除定时任务的时候,删除前会提示确认

例:
每分钟备份一次hosts文件
* * * * * cp /etc/hosts /backup/hosts.bak

每天夜里两点整, 将系统/etc/hosts做备份, 备份/backup目录中
0 2 * * * cp /etc/hosts /backup/hosts.bak

每天夜里两点的每一分钟都执行一次备份操作
* 02 * * * cp /etc/hosts /backup/hosts.bak

每天间隔2个小时, 将一个日志文件secure做切割处理
0 */2 * * * mv /var/log/secure /var/log/secure.bak

奇数分钟执行定时任务
1-59/2 * * * * cp /etc/hosts /backup/hosts.bak
偶数分钟执行定时任务
2-59/2 * * * * cp /etc/hosts /backup/hosts.bak

单号执行
0 0 1-31/2 * * cp /etc/hosts /backup/hosts.bak
双号执行
0 0 2-30/2 * * cp /etc/hosts /backup/hosts.bak

每天上午9点到12点, 将系统数据进行打包
0 9-12 * * * tar zcvf /backup/sys.tar.gz /etc/

每天上午9 11 12, 将系统数据进行打包
0 9,11,12 * * * tar zcvf /backup/sys.tar.gz /etc/

定时任务确认方法

查看日志信息:
tail -f /var/log/cron

	第一个部分: 日志生成时间信息
	第二个部分: 系统主机名称信息
	第三个部分: 执行定时任务方法  crond(系统执行定时任务)  crontab(系统编写定时任务)   anacron(实现默认系统定时任务)
	第四个部分: 完成什么操作任务  

验证定时任务:调整时间信息 — 查看日志文件 — 确认任务功能

PS: 时间设置时, 尽量天时间信息和周时间信息不要同时设置
每月10号  周五 19点 做某事
0 19 10 * 5  执行某操作 (这样每周5都将执行某操作)
定时任务注意事项
1) 定时任务中命令和文件信息最好加上绝对路径
   出现问题:   用户执行命令bash空间和定时任务执行命令bash空间环境不一致
   解决问题: 
   方法一: 将命令信息放入到脚本, 并设置环境变量信息
   方法二: 将命令使用绝对路径执行

2) 定时任务中命令信息尽量不要使用特殊符号 无法识别
   出现问题: 定时任务执行命令有些特殊符号无法识别 % 
   解决问题:
   方法一: 将命令信息放入到脚本, 定时任务执行脚本
   方法二: 特殊符号让定时任务直接识别可以加上转义符号

3) 定时任务执行操作产生输出信息追加到系统黑洞中
   出现问题: 定时任务产生输出信息会占用block和inode空间
   解决问题: 
   方法一: 将正确与错误输出信息都追加到黑洞中
   命令信息 &>/dev/null 或者  >/dev/null 2>&1 
   方法二: 尽量在使用命令时, 不要加上输出信息参数
   * * * * *  tar zcf xxx  	

4) 建议定时任务信息前面最好加上注释信息

5) 多个用户尽量不要编写重复定时任务 
   解决方式: 限制普通用户编写定时任务
   vim /etc/cron.deny   --- 将普通用户加入文件中,禁止普通用户编写定时任务(定时任务黑名单) 
   用户名称 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值