Linux 系统定时任务

前言

上文出现zookeeper定时扩容的情况,在日常情况下需要定时备份最新的几份zookeeper的快照日志与事务日志。直接使用Linux的定时备份即可。另外常见使用Linux定时任务清理测试日志,实际生产会使用filebeat等收集归档。

Linux定时crontab

crontab是Linux的系统级命令,笔者以Ubuntu 20.04.1为例,命令位于/bin目录

Linux 系统定时任务_第1张图片

可以看到这个命令的各种参数,其中最常见的参数

       crontab -l     //显示当前用户的crontab任务
  crontab -r    //删除当前用户的crontab任务
  crontab -e   //编辑当前用户的crontab任务

注意每个用户都可以有独立的crontab任务运行。

crontab用法

crontab的配置有用户级,系统级。系统级的配置在/etc/crontab文件

Linux 系统定时任务_第2张图片

可以看到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定时任务在某些不是特别重要的场景还是很实用的,当然如果是做分布式调度系统,最好使用时间轮、延迟队列等方式做到秒级,毫秒级调度。当然这个就很复杂了,需要监控,管理,日志输出,动态更新等相关功能建设,实现平台化能力建设才行。

你可能感兴趣的:(shell,linux)