定时任务
1、什么是定时任务?闹钟/每天定时 7点半 8点在固定的时间做什么事情
2、定时任务作用国定时间同步时间数据备份(备份的服务器) 重要的数据备份3份 公司备份服务器 笔记本 移动硬盘 网盘一份先打包然后再备份(代码文件 上百个 上千个) 占用磁盘io 降低传输速度 i input o output日常工作需求日志切割 防止日志过大/var/log/nginx.logmv /var/log/nginx /var/log/nginx-2024-11-18.log监控取值+监控定时执行脚本辅助程序运行
系统定时任务使用
定时任务配置的两个方法:第一种方法:系统定时任务配置 root权限配置文件:/etc/crontab语法结构: * * * * * root 可执行的命令;命令五颗星:星和星之间必须有空格* 分 0-59 01或写1表示1分钟 0表示整点* 时 0-23 00或写0表示凌晨12点 * 日 1-31* 月 1-12 1-12月份* 周 0-6 0或7表示星期天
特殊符号表示时间:* 表示每的意思 如果是五颗星表示每分钟都要执行一次定时任务/ 表示间隔的意思 */5 或 */05 表示每间隔5分钟执行一次- 表示区间 7-11 表示上午7点到上午11点, 表示间隔 7-11,13-15 上午7点到11点和下午的1点到3点执行eg:每5分钟执行一个echo oldboy >> oldboy.txt #默认文件不写路径 则会在家目录生成/root/*/5 * * * * root echo oldboy >> oldboy.txt
[root@oldboyedu ~]# cat oldboy.txt
oldboy
oldboyeg:每小时的第5分钟执行一次定时任务5 * * * * root echo test > /dev/null# 注意05和*/5的区别# 注意以时间整点来计算而不是当前时间 比如在当前03创建的定时任务 下次执行时间是05 1.05 1.10 1.15 1.20eg:每分钟执行一次定时任务* * * * * root echo oldboy >> oldboy.txteg:上午7-11点执行任务* 7-11 * * * # 表示7点的每分钟和8-11点的每分钟都会执行 7.01 7.0200 7-11 * * * # 表示7点 8点 9点 10点 和 11点执行一次eg:凌晨12点执行一个命令 笔试题00 00 * * * root 可执行的命令 # 表示凌晨12点eg:7-11,13-15 时间间隔使用* 7-11,13-15 * * * root 可执行命令eg:每分钟打包/etc/hosts /etc/passwd 名称为etc.tar.gz 放到/opt目录下[root@oldboyedu ~]# ll /opt/total 0* * * * * root tar zcvf /opt/etc.tar.gz /etc/hosts /etc/passwd每分钟打包/etc/hosts /etc/passwd 名称为时间+etc.tar.gz放到/opt目录
# 注意定时任务不识别% 需要加\ 或者将明经理写入到脚本中,定时任务执行脚本
* * * * * root tar zcvf /opt/`date +\%F-\%H-\%M`_etc.tar.gz /etc/hosts /etc/passwd1)创建存放脚本的目录
[root@oldboyedu ~]# mkdir /server/scripts -p
[root@oldboyedu scripts]# cat etc.sh
cd /etc
tar zcvf /opt/`date +%F-%H-%M`_etc.tar.gz hosts passwd2)将脚本写入到定时任务
* * * * * root sh /server/scripts/etc.sh定时任务日志文件:
centos和kylin:/var/log/cron
Ubuntu:/var/log/syslogeg:每间隔5分钟执行1次时间同步
*/05 * * * * root ntpdate ntp2.aliyun.com
用户定时任务使用
第二种方法:用户定时任务配置 root权限
配置文件:
/var/spool/cron/root # root就是root用户做定时任务的配置文件 默认是没有的
配置用户定时任务有两种方法:第一种方法:有语法检查的功能
crontab -e 直接回车 就是编辑/var/spool/cron/root visudo-->/etc/sudoers第二种方法:直接vim编辑配置文件vim /var/spool/corn/rooteg:用户定时任务创建每分钟执行一个echo操作
#用户定时任务语法和系统定时任务语法不一致 用户定时任务不需要添加用户
* * * * * echo test >> test.log查看用户定时任务方法1:
[root@oldboyedu ~]# cat /var/spool/cron/root
* * * * * echo test >> test.log查看用户定时任务方法2:
[root@oldboyedu ~]# crontab -l
* * * * * echo test >> test.logeg:每5分钟执行一次时间同步
#注意用户的定时任务默认识别的PATH变量只有/usr/bin和/bin路径 需要重新配置PATH变量
[root@oldboyedu ~]# crontab -l
PATH=/app/tools/cmd:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
* * * * * ntpdate ntp2.aliyun.com &>>/root/cron.log注意:如果想要保留定时任务结果定向到文件中
* * * * * ntpdate ntp2.aliyun.com &>>/root/cron.log
如果不想保留结果
* * * * * ntpdate ntp2.aliyun.com &>/dev/null注意:使用centos,如果关闭了邮件服务,每执行一次定时任务,会自动生成一个小文件,小文件会占用inode号码
[root@linuxnc ~]# systemctl stop postfix定时清理下面目录:
/var/spool/postfix/maildrop/
将定时任务执行的结果定向到文件或者空
定时任务注意事项
1、避免一些不必要的输出,类似tar -zcf 去掉v 类似打包进入相对路径
2、多条命令使用脚本
3、直接写到定时任务配置文件中不识别% 需要加\ 或者写入脚本
4、用户定时任务识别的路径只有/usr/bin和/bin目录 需要重新定义PATH变量
定时任务需求:1.以每天为时间+ip地址+主机名称在/opt/创建目录
[root@oldboyedu ~]# mkdir /opt/2024-11-19_oldboyedu_10.0.0.200
2.打包/etc/passwd /etc/hosts文件名称为etc.tar.gz 放到已经创建好的目录中
3.查找/opt/目录下所有7天前被修改过的文件删除 (模拟环境使用循环生成需要的文件)
2024-11-10
2024-11-11
[root@oldboyedu ~]# crontab -e
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
00 00 * * * mkdir /opt/`date +\%F`_`hostname`_`ifconfig | awk 'NR==2{print $2}'`[root@oldboyedu ~]# crontab -l
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
00 00 * * * mkdir /opt/`date +\%F`_`hostname`_`ifconfig | awk 'NR==2{print $2}'`;tar zcf /opt/`date +\%F`_`hostname`_`ifconfig | awk 'NR==2{print $2}'`/etc.tar.gz /etc/passwd /etc/hosts[root@oldboyedu ~]# crontab -e
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
00 00 * * * mkdir /opt/`date +\%F`_`hostname`_`ifconfig | awk 'NR==2{print $2}'`;tar zcf /opt/`date +\%F`_`hostname`_`ifconfig | awk 'NR==2{print $2}'`/etc.t
ar.gz /etc/passwd /etc/hosts;find /opt/* -mtime +7 | xargs rm -rf