Linux:如何使用 Crontab

2024-09-07 00:28
文章标签 linux 使用 crontab

本文主要是介绍Linux:如何使用 Crontab,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天想了解一下Linux Crontab。嗯,在Windows上,可以看做和定时任务差不多。

要在特定时间进行特定工作。

如果是这样,可以使用crontab,轻松使用Linux

1. 基本 (crontab basic)

先看一下基本的crontab使用方法吧。在Linux shell中输入如下内容:

​$ crontab -e

那么可以编辑的地方就会加载,这里就是可以设置crontab的地方。

在这里输入各种crontab指令后,输入colon(:)后输入wq,更新crontab吧。

相反,如果您想查看当前crontab中包含哪些内容,请输入以下内容:

$ crontab -l

那么就像用cat指令读取文件一样,以标准输出显示crontab内容。

但是(虽然几乎没有)如果想删掉crontab呢?

Linux Shell中输入如下内容:

$ crontab -r

这样就学会了crontab的基本设置、确认和删除。那么在crontab上注册一个Cron,实践一下吧。

如下所示,输入crontab-e后,请输入以下内容。保存时,像vi一样输入Colon(:)后更新为wq即可。

* * * * * ls -al

有五颗星,还有后面写着命令语,这是基本使用方法。当然,不仅可以使用ShellScript,还可以使用Linux命令。这里用ShellScript的方法进行了说明。

如果有五颗星,就会"每分钟运行一次",让我们仔细看看星星指的是什么吧。

2. 周期设定

2.1 基本格式

一个典型的crontab文件由五或六个字段组成,每个字段代表一个时间单位,后面跟着要运行的命令。

* * * * * command to execute
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 7) (星期天为0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 一个月中的第几天 (1 - 31)
| +----------- 小时 (0 - 23)
+------------ 分钟 (0 - 59)

2.2 字段详解

  • *:代表该字段的所有可能值。例如,第一个星号代表每分钟。
  • ,:用于分隔列表中的项目。例如,1,3,5代表第1分钟、第3分钟和第5分钟。
  • -:用于定义范围。例如,1-5代表从第1分钟到第5分钟。
  • /:用于指定步长值。例如,*/2代表每隔两分钟。

2.3 示例

  • */15 * * * * command:每15分钟执行一次命令。
  • 0 8 * * * command:每天早上8点执行一次命令。
  • 0 8 1 * * command:每月1日的早上8点执行一次命令。
  • 0 8 * * 5 command:每个星期五的早上8点执行一次命令。

2.4 特殊字符

  • @reboot:指定命令在每次重启时执行。
  • @yearly:等同于0 0 1 1 *,每年运行一次。
  • @annually:同@yearly
  • @monthly:等同于0 0 1 * *,每月运行一次。
  • @weekly:等同于0 0 * * 0,每周运行一次。
  • @daily:等同于0 0 * * *,每天运行一次。
  • @hourly:等同于0 * * * *,每小时运行一次。

2.6 注意事项

  • 命令应该使用绝对路径。
  • crontab环境变量和登录shell可能不同,因此建议在命令中使用完整的路径。
  • crontab默认不会发送邮件,除非你在命令后面加上> /dev/null 2>&1来忽略输出。
  • 确保服务是启动的,通常使用systemctl start cronservice cron start

3. 按周期分类的示例

3.1 每分钟运行

# 每分钟 执行 test.sh
* * * * * /home/script/test.sh

3.2 特定时间执行

# 每周 星期五 上午 5点 45分 执行 test.sh
45 5 * * 5 /home/script/test.sh

3.3 反复执行

# 每日 每时 0分, 20分, 40分 执行 test.sh
0,20,40 * * * * /home/script/test.sh

3.4 范围执行

# 每日 1点0分到30分 每分钟 执行 test.sh
0-30 1 * * * /home/script/test.sh

3.5 间隔执行

# 每间隔 10分钟 执行 test.sh
*/10 * * * * /home/script/test.sh

3.6 稍微复杂执行

# 5日到6日 2点,3点,4点 每10分 执行 test.sh
*/10 2,3,4 5-6 * * /home/script/test.sh

4. 使用小贴士

4.1 一行只写一个命令

# 错误的例子
* * * 5 5
/home/script/test.sh
# 好的例子
* * * 5 5 /home/script/test.sh

4.2 加个注释

# 注释 #
#--------------------#
# 这是注释 #
#--------------------#

# 输入,后面出现的全部文字都可以进行注释。

5. 日志 (cron logging)

使用crontab定期处理作业是很好的,但有时想留下有关处理明细的日志。那个时候像下面一样写一下:

* * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1

如上填写,每分钟更新test.sh.log文件,以了解作业内容是如何处理的。如果删除2>&1ShellScript只显示标准输出内容。2>&1就在这里确认吧。

但是,如果这个运行太频繁,而且需要持续加载,所以要继续保留日志的话,输入如下:

* * * * * /home/script/test.sh >> /home/script/test.sh.log 2>&1

那么就可以确认日志一直在累积。但是,如果日志堆积过多,会影响Linux的性能,因此需要偶尔空出或重新创建文件的意识。

相反,日志是为不要的cron输入如下内容:

* * * * * /home/script/test.sh > /dev/null 2>&1

6. 备份 (crontab backup)

好,如果使用 crontab-r或者不小心把crontab目录弄丢,现有的crontab明细都没了,真的会很慌张的。所以让我们定期备份crontab吧。 备份有如下方法。

crontab -l > /home/bak/crontab_bak.txt

crontab的内容做成txt文件保存。好,这个也能实现自动化吗?

50 23 * * * crontab -l > /home/bak/crontab_bak.txt

这样做就可以了吧?这是每天晚上11点50分备份crontabCron指令。😃

简单地了解了一下crontab。如果有需要添加的内容或与实际不符的部分,请留言。

这篇关于Linux:如何使用 Crontab的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143538

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三