1.定时任务
1.什么是定时任务
闹钟/每天定时 7点半 8点
在固定的时间做什么事情。
2.定时任务作用
固定时间时间同步
数据备份(备份的服务器) 重要的数据保留3份 公司备份服务器 笔记本 移动硬盘 网盘一份
先打包然后再备份(代码文件 上百个 上千个) 占用磁盘io 降低传输速度 i input o output
日常工作需求
日志切割 防止日志太大
/var/log/nginx.log
mv /var/log/nginx /var/log/nginx-2024-11-18.log
监控取值+监控
定时执行脚本
辅助程序运行
.....
2.关于定时任务的目录和配置文件
目录 | 说明 | 格式,用法 |
---|
/etc/crontab | 系统定时任务配置文件 | * * * * * root 命令或脚本 |
/var/spool/cron/root 或者 crontab -e | root用户做定时任务的配置文件 默认是没有的,PATH变量少需要配置 | * * * * * 命令或者脚本 |
/var/log/cron | 红帽系定时任务日志文件 | |
/var/log/syslog | ubt系定时任务日志文件 | |
3.定时任务符号含义
- crontab -l 查看用户定时任务
- * * * * * 分 时 日 月 周
标识符 | 说明 |
---|
第一颗星 | 分 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点执行 |
%百分号 | 定时任务不识别% 需要加撬棍\ 或者将命令写入到脚本中,定时任务执行脚本 |
| |
| |
4.定时任务怎么写,案例
- 星后面的root代表以root权限执行定时任务
- 五颗星: 星和星之间必须有空格
- 系统定时任务和用户定时任务的区别:
- 用户配置定时任务不需要添加用户 例如: * * * * * pwd 本身用户权限
- 配置文件不同,默认用户配置文件没有crontab -e 编辑会自动创建
- 用户配置文件需要自己设置PATH变量,否则命令少
- 用户定时任务crontab -e 编辑如果语法错误无法保存
- 1.系统定时任务使用方法: * * * * * 用户 命令或脚本
- 2.用户定时任务使用方法 * * * * * 命令或脚本
---系统定时任务案例:
配置文件/etc/crontab
案例1.每5分钟执行一个echo oldboy >> oldboy.txt # 默认文件不写路径 则会在家目录生成/root/
*/5 * * * * root echo oldboy >> oldboy.txt
案例2.每小时的第5分钟执行一次定时任务echo test > /dev/null
05 * * * * root echo test > /dev/null
案例1.每分钟执行一次定时任务echo oldboy >> oldboy.txt
* * * * * root echo oldboy >> oldboy.txt
案例3.每天的7-11点每分钟执行一次
* 7-11 * * *
案例4.每天的7-11点每小时执行一次
00 7-11 * * *
案例5.凌晨12点执行一个命令
00 00 * * *
案例6.每天的7-11点13-15点和每小时执行一次
00 7-11,13-15 * * *
案例7.每分钟打包/etc/hosts /etc/passwd 名称为etc.tar.gz 放到/opt目录
* * * * * root tar /opt/etc.tar.gz /etc/hosts /etc/passwd
案例8.每分钟打包/etc/hosts /etc/passwd 名称为时间+etc.tar.gz放到/opt目录
* * * * * root tar zcf /opt/`date +\%F`+etc.tar zcf.tar.gz /etc/hosts /etc/passwd
案例9.将脚本写入到定时任务每分钟执行
* * * * * root /root/xx.sh
案例10.每间隔5分钟执行1次时间同步。
*/5 * * * * root ntpdate ntp2.aliyun.com
---用户定时任务案例:
注意用户的定时任务默认识别的PATH变量只有/usr/bin和/bin路径 需要重新配置PATH变量
/var/spool/cron/root 或者 crontab -e
案例1.用户定时任务创建每分钟执行一个echo的动作
* * * * * echo
案例1.每5分钟执行一次时间同步
*/5 * * * * ntpdate ntp2.aliyun.com
案例1.每5分钟执行一次时间同步,留输出内容,和不保留输出内容
*/5 * * * * ntpdate ntp2.aliyun.com &>>/root/ntp.log
*/5 * * * * ntpdate ntp2.aliyun.com &>/dev/null
案例1.entos7定时清理大于7天的文件/var/spool/postfix/maildrop/
* * * * * find /var/spool/postfix/maildrop/ -type f -mtime +7 | xargs rm -f
案例1.以每天为时间+ip地址+主机名称在/opt/创建目录
00 00 * * * mkdir `date +\%F-\%H-\%M-\%S`---`ip a | sed -rn 's#^.*inet (.*)/24 brd.*3$#\1#g p'`---`hostname`
案例1.打包/etc/passwd /etc/hosts文件名称为etc.tar.gz 放到上面案例已经创建好的目录中
* * * * * tar zcf /root/`date +\%F-\%H-\%M-\%S`---`ip a | sed -rn 's#^.*inet (.*)/24 brd.*3$#\1#g p'`---`hostname`/etc.tar.gz /etc/passwd /etc/hosts
案例1.查找/opt/目录下所有7天前被修改过的文件删除 (模拟环境使用循环生成需要的文件)
* * * * * find /opt/ -type f -mtime +7 | xargs rm -f
温馨提示:
使用centos,如果关闭了邮件服务,每执行一次定时任务,会自动生成一个小文件,小文件会占用inode号码
[root@linuxnc ~]# systemctl stop postfix
定时清理下面目录:
/var/spool/postfix/maildrop/
将定时任务执行的结果定向到文件或者空。
5.定时任务注意事项
- 避免一些不必要的输出 类似tar -zcf 去掉v 类似打包进入相对路径
- 多条命令使用脚本
- 直接写到定时任务配置文件中不识别% 需要加\ 或者写入脚本。
- 用户定时任务识别的路径只有/usr/bin和/bin目录 需要重新定义PATH变量
- 将定时任务结果定向到文件中可以排查问题