定时任务

定时任务
什么是定时任务
类似闹钟
Linux下面定时执行任务
备份
流量低谷期(人少的时候)
脚本/命令
定时任务分类
crontab (cronie)
工作必会
anacron
适用于 服务器非7*24小时运行
atd
一次性的定时任务
crontab 分类
系统的定时任务
配置文件
/etc/crontab
目录
etc/cron.daily
这个目录内容系统定时任务 会每天执行
etc/cron.hourly
这个目录内容系统定时任务 会小时执行
etc/cron.monthly
这个目录内容系统定时任务 会每月执行
etc/cron.weekly
这个目录内容系统定时任务 会每周执行
日志切割
系统定时任务+logroate
中毒
定时检查
存放在开机自启动
用户自己的定时任务
crontab -l
list
查看 当前用户的定时任务
crontab -e
edit
修改当前用户的定时任务
修改文件
crontab -l
cat /var/spool/cron/root
crontab -e
vi /var/spool/cron/root
定时任务格式
规则
什么时候做什么事
分时日月周 命令/脚本
特殊符号
*

/
每2分钟
每隔xxx分钟
*/ * * * *date>>/tmp/oldboy.txt
检查结果
看文件的内容
看日志
容易混淆(一样)
*/1 * * * *date>>/tmp/oldboy.txt 每隔一分钟
* * * * *date>>/tmp/oldboy.txt 每隔一分钟
1 * * * *date>>/tmp/oldboy.txt 每个小时的第一分钟
一样
-
01-23

01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23
定时任务日志

定时任务实际备份案例
	#第1个里程碑-命令行测试 (测试命令是否ok)
	#第2个里程碑-书写脚本并测试脚本
	#第3个里程碑-写入定时任务 每分钟执行 检查
	#第4个里程碑-写入定时任务 根据要求修改时间
	书写脚本拍错
		先运行里面的命令
		运行脚本 显示脚本的执行过程
			sh -x
			带+号的就是脚本执行过程
			加号越多越优先执行
每天晚上12点打包备份/etc目录到/tmp下
定时任务箴言(坑)
	一定要加上1个·注释
	书写定时任务的时候 尽量使用脚本
	运行脚本使用sh
	在定时任务中 %有特殊含义 相当于回车 加上撬棍(\)就可以了
	定时任务中的命令/脚本 使用绝对路径
		用户的定时任务
			用户家目录下
		系统定时任务
			根下
	在定时任务里面 每个命令脚本 定向到空 或追加到文件
		写法
		原因
		故障案例
	定时任务中运行脚本环境变量问题
		使用命令用绝对路径
		脚本开头 重新设置 PATH
			.   /etc/profile
			或
			source /etc/profile   

定时任务
定时任务
定时任务

每天晚上12点 打包备份/etc/目录到/tmp下面
#第1个里程碑-命令行测试 (测试命令是否ok)定时任务
#第2个里程碑-书写脚本并测试脚本
定时任务

#第3个里程碑-写入定时任务 每分钟执行 检查定时任务
用-x 排查脚本执行的错误
定时任务
定时任务
#第4个里程碑-写入定时任务 根据要求修改时间 crontab -e
cat /var/spool/cron/root
修改当前用户的定时任务定时任务
crontab -l
定时任务 vim/var/spool/cron/root
查看 当前用户的定时任务

定时任务日志默认存放在 /var/log/cron

tail -f /var/log/cron
定时任务

跟踪日志与ll /tmp/下 压缩文件时间是一致的

定时任务
带+的就是脚本的执行过程,+号越多越执优先行
定时任务
定时任务

在定时任务中最好加上注释#
添加脚本文件必须是绝对路径,如 /usr/bin/sh /server/scripts/bak-etc.sh
脚本文件最好重定向到空(黑洞/dev/null)或指定文件中。否则就会邮件服务开启时,不断地给root发邮件(you have new mail in /var/spool/mail/root); 邮件服务关闭时,发出的邮件临时堆积起来,
/var/spool/postfix/maildrop (这个目录下会有大量的小文件),会导致inode满了.
定时任务
定时任务

每分钟 显示当前系统的时间和ip地址 追加到 /tmp/ip.log中
date
ip a s eth0

绝对路径
定时任务

定时任务中运行脚本环境变量问题
使用命令用绝对路径 如 /usr/bin/sh /server/scripts/bak-etc.sh
脚本开头 重新设置 PATH (PATH是变量配置中的是路径)
. /etc/profile

source /etc/profile
定时任务

在脚本中命令可以逐条按顺序堆积,也可以一条命令;在定时任务中必须是一条命令书写.

使用变量定义
vim /server/scripts/kobe.sh

dir=ip a s eth0|awk -F"[ /]+" 'NR==3{print $3}'
mkdir -p /backup/dirtarzcf/backup/dir tar zcf /backup/dir-date +%F-%w_tar.gz /etc/
rm -f find /backup/ -type f -mtime +6 ! -name "*1_tar.gz"