linux crontab

时间:2020-02-23 14:37:59  来源:igfitidea点击:

Crontab是窗口的Task Scheduler的Linux等效项。
它可以设置任务以定期自动运行。
我们中的一些人可能已经在思考此功能的各种用例。
它对于可以使用它来自动化日常维护工作和其他任务的系统最有用。

crontab语法如何编写crontab条目

编写CRONTAB条目时,我们必须使用六个字段。
前五个字段1-5用于指定要运行任务的日期和时间,而第六个字段是定义有关任务。

这是CRONTAB条目如何看起来的基本外观:

[minute ] [hour ] [DayOfMonth ] [MonthOfYear ] [DayOfWeek ] [要执行的脚本 ]

每个字段的可接受值如下:

  • 分钟:值可以在0-59之间。

  • 小时:值可以在0-23之间。

  • Dayofmonth:值可以在1-31之间。几个月不到31天(2月28日),额外的日子将被忽略。

  • 仓下限:值可以在1-12之间。 1月1日1月12日代表12月。价值也可以是1月份的前三个字母,你可以写1月,并在六月,你可以写君。

  • Dayofweek:值可以在0-7之间。这里都是0和7的星期天。此外,该价值可以是星期一的前三个字母,我们可以写一下,周一,周五,我们可以写周五。

既然我们对如何定义时间值的基本了解,让我们快速地查看多个值和范围。
为此,我们可以使用以下特殊字符:

  • 星号(*):这意味着该值可以匹配任何内容。

  • 逗号(,):使用它来定义多个值,如2,4,6或者tue,星期六。

  • 连字符( - ):这可用于定义2-6或者tue-sat等范围。这里所有的数字在2到6之间,周二到星期六的所有日子都将被采取。

我们还可以使用逗号(,)和连字符( - )在一起定义多个范围。
例如,如果我们想从1月到4月和10月到12月的所有月份定义,我们可以编写1月至12月1日 - DEC。

如何创建或者添加新的crontab条目?

所以,现在我们有一个基本思想如何编写Crontab条目让我们看看如何为其添加任务。
嗯,首先,我们需要在终端中输入以下命令: $crontab -e这将在编辑器中打开CRONTAB文件,我们可以其中添加或者编辑作业。

默认情况下,它将为当前用户创建Crontab条目。
但是,如果要为其他用户创建CRONTAB条目,则需要使用此命令: $crontab -u username -e用户名只是一个占位符,我们需要输入要为其创建新CRONTAB任务的实际用户名。

如何查看所有crontab条目?

随着时间的推移,我们可以在系统上创建一堆Crontab条目。
因此,有必要查看这些条目,以查看我们仍然需要哪些,我们可以删除哪些。

要列出当前用户的所有CRONTAB条目,我们可以使用以下命令: $crontab -l但是,要查看不同用户的CRONTAB条目,我们需要使用此命令: $crontab -u username -l因此,几乎涵盖了CRONTAB所需的所有基本语法和命令。
让我们谈谈如何在Linux中使用Crontab的一些实际示例。

15使用CRONTAB在Linux中的实际实例

其中我们将介绍在现实世界中的CRONTAB条目的一些实际例子。
我们将向我们展示我们需要编写的crontab命令,因此我们正在制定更深入的了解。

1.在特定时间安排每天运行的Cron

以下命令将每天上午1点运行任务/scripts/script.sh。 0 1 * * * /scripts/script.sh第三个字段中的星号表示它将每月的每一天运行,第四个字段表示它将每月运行常年,第五个字段表示它将每周每天运行的第五个字段。

2.安排每天运行的Cron

以下命令将在午夜日常运行任务/scripts/script.sh。 0 0 * * * /scripts/script.sh或者我们可以使用命令: @daily /scripts/script.sh这里@Daily时间戳替换为"0 0 * * *"。

3.安排每天运行两次的人

以下命令将运行任务/scripts/script.sh,每天上午1点半和下午1点。 0 1,13 * * * /scripts/script.sh请注意,第二个字段包含由逗号分隔的两个条目以定义两个单独的时间点。

4.安排每分钟运行的Cron

以下命令将重复运行每分钟的任务/scripts/script.sh。 * * * * * /scripts/script.sh正如我们所看到的,用于指定日期和时间的所有五个字段都标有星号(*)。

5.每x分钟运行

以下命令将每20分钟运行任务/scripts/script.sh。 * /20 * * * /scripts/script.sh其中我们在小时场中使用了/20,这意味着任务每20分钟运行一次。
如果我们使用的(在这里)使用/10,这将意味着任务每10分钟运行一次。

6.每x小时运行

以下命令将在0分钟内每6小时运行任务/scripts/script.sh。 0 * /6 * * /scripts/script.sh我们在日田中使用了/6,这是告诉它每6小时运行命令。
由于分钟场为0,因此当微小手为12(或者0)时,它将完全运行。

7.安排每10秒钟每10秒运行Cron

要使用时间参数执行每10秒执行命令。
但是,这可以通过在包括睡眠命令的同时配置相同的Cron来管理。

* * * * * /scripts/script.sh
* * * * * sleep 30; /scripts/script.sh

8.每小时运行

以下命令将运行任务/scripts/script.sh,每小时一次。 0 * * * * /scripts/script.sh就像之前一样,我们可以使用备用命令: @hourly /scripts/script.sh

9.每月自动执行任务

以下命令将每月运行任务/scripts/script.sh。 0 0 1 * * /scripts/script.sh或者我们可以使用命令: @monthly /scripts/script.sh

10.在选定的月份执行

以下命令将仅在5月份运行任务/scripts/script.sh。
但是,它将执行当月的每一分钟或者每一天。 * * * Jan * /scripts/script.sh如果我们希望任务每5月运行,但只有在12时的第1次,那么请使用此命令: 0 0 1 Jan * /scripts/script.sh

11.安排每个月的星期一运行步

这是一个棘手的。
通过单独使用时间参数,我们无法创建仅在每个月的第一个星期一执行的CRON。
但是,我们可以在命令字段中添加一个条件,这些字段将执行此操作。 0 0 * * sun [$(date +%d) -le 01] && /scripts/script.sh

12.每周运行它

以下命令将在午夜周一的每周运行任务/scripts/script.sh。 0 0 * * mon /scripts/script.sh或者我们可以使用之前使用的替代命令: @weekly /scripts/script.sh

13.每年

以下命令将在1月1日在午夜运行任务/scripts/script.sh。 0 0 1 1 * /scripts/script.sh也有一个替代命令: @yearly /scripts/script.sh

14.每天在特定时间运行一次多个任务

以下命令将每天在午夜运行这两个任务/scripts/script1.sh和/scripts/script2.sh。 0 0 * * * /scripts/script1.sh; /scripts/script2.sh使用分号(;),我们可以定义两个任务而不是一个任务。
我们可以使用该过程定义三个,四个...最多n个功能。

15.在系统重新启动后计划Cron运行

有时,每次重新启动后都可能需要运行任务或者一组任务。
这是"@Reboot"变得有用的地方。
以下命令将在系统启动时运行任务/scripts/script.sh。 @reboot /scripts/script.sh