前言
上文出现zookeeper定时扩容的情况,在日常情况下需要定时备份最新的几份zookeeper的快照日志与事务日志。直接使用Linux的定时备份即可。另外常见使用Linux定时任务清理测试日志,实际生产会使用filebeat等收集归档。
Linux定时crontab
crontab是Linux的系统级命令,笔者以Ubuntu 20.04.1为例,命令位于/bin目录
可以看到这个命令的各种参数,其中最常见的参数
crontab -l //显示当前用户的crontab任务
crontab -r //删除当前用户的crontab任务
crontab -e //编辑当前用户的crontab任务
注意每个用户都可以有独立的crontab任务运行。
crontab用法
crontab的配置有用户级,系统级。系统级的配置在/etc/crontab文件
可以看到crontab是分钟级调度,用法已经有详细的说明了。果然官方配置就是最好的文档。我们自己最好不要修改系统级,直接通过crontab -e修改即可
17 * * * * root cd / && run-parts --report /etc/cron.hourly
run-parts --report /etc/cron.hourly 这里表示去执行/etc/cron.hourly下面的脚本
末尾的参数是命令或者脚本
shell脚本编写实现
假设我要找到5天前的日志,并删除
find 路径 -mtime +天数 -name "文件名" -exec rm -rf {} \;
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-exec 可以执行命令,包括cp -R cp -f等,等同于ok
那么就可以crontab -e
0 1 * * * find /xxx/xxx/xxx -mtime +5 -name "*.log" -exec rm -rf {} \;
:wq保存即可
也可以在某个位置写个shell脚本,通过执行脚本来达到目的,方便在多台机器复制,或者在容器中制作镜像。
总结
Linux的crontab定时任务在某些不是特别重要的场景还是很实用的,当然如果是做分布式调度系统,最好使用时间轮、延迟队列等方式做到秒级,毫秒级调度。当然这个就很复杂了,需要监控,管理,日志输出,动态更新等相关功能建设,实现平台化能力建设才行。