这篇文章中,我会深入了解什么是cron作业和crontab,举例说明什么是cron,为什么要使用它。
在Raspberry Pi教程中,使用了不少cron作业。Cron作业提供了一种方便的方式来安排定时任务。
此外,利用cron可以消除程序持续运行所消耗的宝贵的处理器计算能力和RAM的内存占用。
在很多情况下,都需要利用cron作业。它是Linux系统中最有用的工具之一。
什么是Cron Job?
Cron是一个基于时间的作业调度器,它是类似Unix的操作系统(如Linux及其许多衍生产品)的一个组成部分。
使用cron是定期运行命令或shell脚本等事情的一种方式。
通过 “cron “工具安排的任务通常被称为 “Cron作业”。在处理基于Unix的系统(如Raspbian)时,你很快就会依赖cron作业。
Cron作业格式
下面我们包含了两个表格。第一张表显示了cron作业的一般语法,第二张表显示了cron作业中使用的各种符号以及它们的用途。第二张表显示了cron作业中使用的各种符号,以及它们可以用来做什么。
cron job的前五个组件定义了希望任务启动的时间。使用它,可以设置一个特定的时间,或者指定一个时间间隔,比如每隔一天,或者每分钟。
在每个cron作业行的末尾,需要指定当前面的组件条件满足时要触发的命令。
在接下来的几个章节中深入探讨您可以使用cron作业的各种方法。但现在,请先熟悉一下cron作业的一般设置。
Cron作业语法
六个基本部分构成了一个cron工作。
前五个部分构成了cron作业的定时语法。这五个部分包括,分钟,小时,月日,月日,周日。
语法的最后也就是第六部分是当定时语法中的条件满足时,你要执行的命令。
* | * | * | * | * | [COMMAND] |
---|---|---|---|---|---|
Minute (0-59) |
Hour (0-23) |
Day Of the Month (1-31) |
Month (1-12) |
Day of the week (0-6) |
Command to run |
Cron作业符号表
有一些不同的符号,可以在cron作业中使用。
在你的cron工作中,你可能会使用最多的符号是星号(*)。星号意味着每当该值发生变化时,cron就会启动。例如,当在分钟列中使用时,它将每分钟启动一次cron。
另一个你会经常使用的符号是步长值符号,这就是正向斜杠(/)。当你想让一个事件每隔一定时间发生一次时,这个符号就很有用。
例如,每5分钟在分钟一栏中为 “*/5″,每3天在月日一栏中为 “*/3″。
下面你可以看看我们的表格,看看你在cron作业中可以使用的各种符号,以及如何使用它们。
符号 | 用途 | 例子 | 解释 |
---|---|---|---|
* | 任何值 | * * * * * [CMD] | 每分钟执行一次 |
, | 值分割符 | 0 0 * * 1, 3, 5 [CMD] | 每周一、三、五 0点执行 |
– | 定义一个范围 | 0 0 * 1-6 * [CMD] | 前6个月,每天0点执行 |
/ | 步长 | */5 */2 * * * [CMD] | 每天,每2个小时,每6分钟执行一次 |
@yearly @annually |
非标准 | @yearly [CMD] @annually [CMD] |
在大年初一的0点运行 |
@monthly | 非标准 | @monthly [CMD] | 每月1日0点执行 |
@weekly | 非标准 | @weekly [CMD] | 每周第一天的0点执行 |
@daily | 非标准 | @daily [CMD] | 每天0点执行 |
@hourly | 非标准 | @hourly [CMD] | 每小时执行一次 |
@reboot | 非标准 | @reboot [CMD] | 当cron服务重新启动时,在启动时运行执行 |
在本节中,将为您提供一些您可以使用的cron作业的例子。还将解释它们是如何工作的,以及所使用的符号是做什么的。
* * * * * [COMMAND]
这一行最基本的cron作业。它将每分钟一直运行该命令。
基本上,如果想让一些命令一直运行,就用这个cron作业。
0 * * * * [COMMAND]
上面的一行将在每小时的第0分钟运行。如果想让某件事情每小时运行一次,这个cron就很有用。
15 5 * * * [COMMAND]
这个cron作业将在每天的 “5:15 am “启动。通过在分钟栏中指定 “15”,在小时栏中指定 “5 “来实现。
0 0 15 * * * [COMMAND]
这个命令将在每月15日0点运行。
*/15 * * * * * [COMMAND]
现在这个作业将每15分钟运行一次。通过将星号(*)与前斜线”/”修饰符配对来实现。
0 0 * * 1-5 [COMMAND]
在这个cron作业中,使用了范围符号(-),因此只在工作日运行cron。这项工作将在第1天(星期一)-第5天(星期五)的午夜时分启动。
* * 3,5,10 * * [COMMAND]
最后一个cron作业的例子将在每个月的3号、5号和10号每分钟触发一次。你可以通过使用逗号(,)这样列出每列的值。
编辑Crontab文件
crontab文件是保存当前用户所有cron作业的地方。cron守护程序会自动读取这些文件并处理文件中的作业。
必须注意的一点是,cron作业是由创建它们的用户来运行的。例如,一个由root用户创建的cron作业将由root用户运行。或者,一个名为pimylifeup的用户创建的cron作业将由该用户运行。
要开始修改当前用户的crontab文件,可以运行以下命令。在开始时添加sudo将编辑根用户的crontab。
crontab -e
另外,如果你想编辑某个特定用户的crontab,你可以用”-u “参数指定用户,如下图所示。
crontab -u [USERNAME] -e
当你第一次运行 “crontab -e “命令时,你会被要求选择一个编辑器来使用。
我发现”/bin/nano “是最容易使用的,但你应该选择你熟悉的和乐意使用的。
no crontab for pimylifeup - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]:
在crontab文件中,你可以在底部添加新的cron作业。每个作业都应该在自己的行中。
例如,如果你要在文件中添加两个新的cron作业,它应该看起来像我们下面的东西。
# m h dom mon dow command
* * * * * [COMMAND]
0 0 15 * * * [COMMAND]
现在,我希望你对cron作业和crontab都有了很好的了解。如果你觉得我遗漏了什么,或者有什么意见,那么请不要犹豫,在下面留言。
欢迎转载,请留下出处链接:Labno3 » 什么是linux Cron作业,如何设置Ubuntu Crontab定时任务