百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Linux定时任务工具crontab入门

liuian 2024-12-01 00:59 39 浏览

Linux crontab是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。


crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。


而 linux 任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

一、crontab的基本用法

分钟(0-59) 小时(0-24) 日(1-31) 月(1-12)星期(0-7) <要执行的命令>

其中星期从0到6,0表示周日,1~7对应星期一到星期日,也可以用0来表示星期日。


上图每个星号*分别对应具体的时间块(分钟、小时、日等)。


执行crontab -l可以列出当前用户的所有定时任务。

如果想要编辑当前用户的定时任务,执行crontab -e,如果是第一次编辑crontab定时任务,需要先选择想要使用的编辑器,如下所示,输入对应的编号,如输入3,选择vim编辑器。

[root@centos-160 ~]# crontab -l
no crontab for root
[root@centos-160 ~]# crontab -e
no crontab for root - using an empty one
crontab: no changes made to crontab


crontab常见命令参数:

usage: crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

(default operation is replace, per 1003.2)

-e (edit user's crontab)

-l (list user's crontab)

-r (delete user's crontab)

-i (prompt before deleting user's crontab)

-s (selinux context)

crontab -e – 编辑该用户的 crontab,当指定 crontab 不存在时新建。

crontab -l – 列出该用户的 crontab。

crontab -r – 删除该用户的 crontab。

crontab -u<用户名称> – 指定要设定 crontab 的用户名称。


二、crontab使用入门

1. 每分钟执行一次命令

* * * * * <要执行的命令>

简要说明:

  • * 代表着所有可能取到的值,除了直接用 * 外,下面的几个例子也较为常用
  • 当指定 */5 在分钟字段,代表每五分钟。
  • 当指定 0-10/2 在分钟字段,代表在前十分钟的每两分钟


比如,每分钟进行一次手工同步时间,就可以在crontab文件中写入下面的crontab 语句:

* * * * * chronyc -a makestep

保存、退出编辑器。然后可以通过crontab -l看到我们刚刚添加的任务,等待几分钟就可以看到时间同步了。



2. 每5分钟执行一次命令

*/5 * * * * <要执行的命令>

比如每5分钟往文件~/hello.txt中写入一个“hello world”,就可以在crontab文件中写入下面的crontab语句:

*/5 * * * * echo "hello world" >> ~/hello.txt


等待一些时间就可以看到~/hello.txt文件里面多了几个”hello world”。



3. 每15分钟执行一次命令

*/15 * * * * <要执行的命令>


4. 每个小时的27分执行一次命令

27 * * * * <要执行的命令>

该定时任务每小时执行一次,每次在27分执行。


5. 也可以指定多个具体的执行时间点,使用逗号分隔

0,5,10 * * * * <要执行的命令>

将在每个小时的0分、5分、10分分别执行一次。


6. 每半小时,即每30分钟执行一次命令

*/30 * * * * <要执行的命令>

如果现在是10点整,那么该任务将分别在10:30 11:00 11:30 … 执行。

需要注意的是具体的时间和设置定时任务的时间是无关的,比如我们在10:17设置了定时任务,那么这个定时任务执行的时间不是10:47、11:17、11:47等,而是10:30、11:00、11:30等。


7. 每小时的整点即0分时执行一次命令

0 * * * * <要执行的命令>


8. 每1小时执行一次命令

0 */1 * * * <要执行的命令>

如果当前时间是10点,那么下次执行时间就是11点。

0 */1 * * * rm -f /var/log/clickhouse-server/*.log


三、如何查看crontab的日志记录

看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察。



四、CronTab语法自动生成器

通过基于网页的crontab语法生成器可以快速地检查crontab语句是否符合预期或者根据我们期望的间隔时间快速生成想要的crontab语句,下面两个网站都是英文的,但是都是很简单的英文,很容易上手。

在crontab.guru 中输入crontab语句,网站将会告诉我们这段语句的含义,以及执行的具体时间,可以用来检验编写的crontab语句是否正确。



还可以在下面的网站中可以设定我们想要的运行间隔,然后网页会自动生成对应的crontab语句。

http://cron.ciding.cc/


也可以反解析Cron 表达式:0 */5 * * *

相关推荐

eino v0.4.5版本深度解析:接口类型处理优化与错误机制全面升级

近日,eino框架发布了v0.4.5版本,该版本在错误处理、类型安全、流处理机制以及代理配置注释等方面进行了多项优化与修复。本次更新共包含6个提交,涉及10个文件的修改,由2位贡献者共同完成。本文将详...

SpringBoot异常处理_springboot异常注解

在SpringBoot中,异常处理是构建健壮、可维护Web应用的关键部分。良好的异常处理机制可以统一返回格式、提升用户体验、便于调试和监控。以下是SpringBoot中处理异常的完整指...

Jenkins运维之路(Jenkins流水线改造Day02-1-容器项目)

这回对线上容器服务器的流水线进行了一定的改造来满足目前线上的需求,还是会将所有的自动化脚本都放置到代码库中统一管理,我感觉一章不一定写的完,所以先给标题加了个-1,话不多说开干1.本次流水线的流程设计...

告别宕机!零基础搭建服务器监控告警系统!小白也能学会!

前言本文将带你从零开始,一步步搭建一个完整的服务器指标监控与邮件告警系统,使用的技术栈均为业界主流、稳定可靠的开源工具:Prometheus:云原生时代的监控王者,擅长指标采集与告警规则定义Node_...

httprunner实战接口测试笔记,拿走不谢

每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试码同学抖音号:小码哥聊软件测试01开始安装跟创建项目pipinstallhttprunne...

基于JMeter的性能压测平台实现_jmeter压测方案

这篇文章已经是两年前写的,短短两年时间,JMeter开源应用技术的发展已经是翻天覆地,最初由github开源项目zyanycall/stressTestPlatform形成的这款测试工具也开始慢...

12K+ Star!新一代的开源持续测试工具!

大家好,我是Java陈序员。在企业软件研发的持续交付流程中,测试环节往往是影响效率的关键瓶颈,用例管理混乱、接口调试复杂、团队协作不畅、与DevOps流程脱节等问题都能影响软件交付。今天,给大家...

Spring Boot3 中分库分表之后如何合并查询

在当今互联网应用飞速发展的时代,数据量呈爆发式增长。对于互联网软件开发人员而言,如何高效管理和查询海量数据成为了一项关键挑战。分库分表技术应运而生,它能有效缓解单库单表数据量过大带来的性能瓶颈。而在...

离线在docker镜像方式部署ragflow0.17.2

经常项目上会出现不能连外网的情况,要怎么使用ragflow镜像部署呢,这里提供详细的步骤。1、下载基础镜像根据docker-compose-base.yml及docker-compose.yml中的i...

看,教你手写一个最简单的SpringBoot Starter

何为Starter?想必大家都使用过SpringBoot,在SpringBoot项目中,使用最多的无非就是各种各样的Starter了。那何为Starter呢?你可以理解为一个可拔插式...

《群星stellaris》军事基地跳出怎么办?解决方法一览

《群星stellaris》军事基地跳出情况有些小伙伴出现过这种情况,究竟该怎么解决呢?玩家“gmjdadk”分享的自己的解决方法,看看能不能解决。我用英文原版、德语、法语和俄语四个版本对比了一下,结果...

数据开发工具dbt手拉手教程-03.定义数据源模型

本章节介绍在dbt项目中,如何定义数据源模型。定义并引入数据源通过Extract和Load方式加载到仓库中的数据,可以使用dbt中的sources组件进行定义和描述。通过在dbt中将这些数据集(表)声...

docker compose 常用命令手册_docker-compose init

以下是DockerCompose常用命令手册,按生命周期管理、服务运维、构建配置、扩缩容、调试工具分类,附带参数解析、示例和关键说明,覆盖多容器编排核心场景:一、生命周期管理(核心命令...

RagFlow与DeepSeek R1本地知识库搭建详细步骤及代码实现

一、环境准备硬件要求独立显卡(建议NVIDIAGPU,8GB显存以上)内存16GB以上,推荐32GB(处理大规模文档时更高效)SSD硬盘(加速文档解析与检索)软件安装bash#必装组件Docker...

Docker Compose 配置更新指南_docker-compose配置

高效管理容器配置变更的最佳实践方法重启范围保留数据卷适用场景docker-composeup-d变更的服务常规配置更新--force-recreate指定/所有服务强制重建down→up流程...